`
小巫婆
  • 浏览: 23161 次
文章分类
社区版块
存档分类
最新评论

Lucene查询语法

阅读更多
一、模糊查询
Term Modifiers
Lucene支持在Term中使用通配符来支持模糊查询。
Wildcard Searches [类:org.apache.lucene.search.WildcardQuery]
Lucene支持单个或者多个字符的通配符查询,匹配单一字符使用符号"?",匹配多个字符使用符号"*".
"?"通配符将查找所有满足通过一个字符替换后符合条件的文档。比如:搜索"test"和"text"你可以使用:
te?t
"*"通配符将查询0个或者多个字符替换后符合条件的。举例来说,查询test,tests或者tester,你可以使用一下字符串来搜索:
test*
当然,你也可以将"*"放在字符的中间
te*t
注意:你不能将"*"和"?"放在第一个字符来查询。(Lucene应该是出于性能考虑,所以不支持该功能)
Fuzzy Searches [org.apache.lucene.search.FuzzyQuery]
Lucene支持基于编辑距离算法的模糊搜索,你可以使用波浪符号"~"放在查询词的后面,比如搜索一个与"roam"拼写相近的词可以使用:
roam~
该查询将寻找类似"foam"和"roams"等的词语。也可以说是相似度查询。
Proximity Searches [org.apache.lucene.search.PrefixQuery]
Lucene支持指定距离查询,你可以使用波浪号"~"加数字在查询词后。举例来说搜索"apache"和"jakarta"距离10个字符以内,你可以使用如下语法:
"jakarta apache"~10
通过这个语法支持,我们可以单字索引,分词查询,分词完后,满足每个词的单字必须间距为1.这样可以保证100%的召回率,但是在索引方面将造成索引臃肿,同时查询速度也将在某程度上降低,一般来说,在150W文章数据到200W数据的时候性能将会明显的降低。
Range Searches [org.apache.lucene.search.RangeQuery]
范围查询允许你指定某个字段最大值和最小值,查询在二者之间的所有文档。范围查询可以包含或者不包含最大值和最小值,排序是按照字典顺序来排序的。
mod_date:[20020101 TO 20030101]
这个将查找满足mode_date字段在大于等于20020101,小于等于20030101范围的所有文档,注意:范围查询并不是为日期字段专设的,你也可以对非日期字段进行范围查询。
title:{Aida TO Carmen}
这个将查找所有标题在Aida和Carmen之间但不包含Aida和Carmen的文档。包含最大值和最小值的查询使用方括号,排除则使用花括号。

二、优先级
Boosting a Term
Lucene支持给不同的查询词设置不同的权重。设置权重使用"^"符号,将"^"放于查询词的尾部,同时跟上权重值,权重因子越大,该词越重要。设置权重允许你通过给不同的查询词设置不同的权重来影响文档的相关性,假如你在搜索:
jakarta apache
如果你认为"jakarta"在查询时中更加重要,你可以使用如下语法:
jakarta^4 apache
这将使含有Jakarta的文档具有更高的相关性,同样你也可以给短语设置权重如下:
"jakarta apache"^4 "jakarta lucene"
在默认情况下,权重因子为1,当然权重因子也可以小于1.

三、Term操作符
Boolean operators
布尔操作符可以将多个Term合并为一个复杂的逻辑查询。Lucene支持AND,
+,OR,NOT, -作为操作符号。注意,所有的符号必须为大写。
OR
OR操作符默认的连接操作符。这意味着,当没有给多个Term显式指定操作符时,将使用OR,只要其中一个Term含有,则可以查询出文档,这跟逻辑符 号||的意思相似。假设我们查询一个文档含有"jakarta apache"或者"jakarta"时,我们可以使用如下语法:
"jakarta apache" jakarta
或者
"jakarta apache" OR jakarta
AND
AND操作符规定必须所有的Term都出现才能满足查询条件,这跟逻辑符号&&意思相似。如果我们要搜索一个文档中同时含有"jakarta apache"和"jakarta lucene",我们可以使用如下语法:
"jakarta apache" AND "jakarta lucene"
+
+操作符规定在其后的Term必须出现在文档中,也就是查询词中的MUST属性。举个例子来说,当我们要查询一个文档必须包含"jakarta",同时可以包含也可以不包含"lucene"时,我们可以使用如下语法:
+jakarta apache
NOT
NOT操作符规定查询的文档必须不包含NOT之后的Term,这跟逻辑符号中的!相似。当我们要搜索一篇文档中必须含有"jakarta apache"同时不能含有"Jakarta lucene"时,我们可以使用如下查询;
"jakarta apache" NOT "jakarta lucene"
注意:NOT操作符不能使用在单独Term中,举例来说,以下查询将返回无结果:
NOT "jakarta apache"
-
-操作符排除了包含其后Term的文档,跟NOT有点类似,假设我们要搜索"Jakarta apache"但不包含"Jakarta lucene"时,我们使用如下语法:
"jakarta apache" -"jakarta lucene"
Grouping
Lucene支持使用圆括号来将查询表达式分组,这将在控制布尔控制查询中非常有用。举例来说:当搜索必须含有"website",另外必须含有"jakarta"和"apache"之一,我们可以用如下语法:
(jakarta OR apache) AND website
这种语法对消除歧义,确保查询表达式的正确性具有很大的意义。
Field Grouping
Lucene支持对字段用圆括号来进行分组,当我们要查询标题中含有"return"和"pink ranther"时,我们可以使用如下语法:
title:(+return +"pink panther")
Escaping Special Characters
Lucene支持转义查询中的特殊字符,以下是Lucene的特殊字符清单:
+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
转义特殊字符我们可以使用符号"\"放于字符之前。比如我们要搜索(1+1):2,我们可以使用如下语法:
\(1\+1\)\:2

Tips: QueryParser.escape(q) 可转换q中含有查询关键字的字符!如:* ,? 等

http://java.chinaitlab.com/tools/939996.html

分享到:
评论

相关推荐

    基于深度学习的零样本识别.zip

    基于深度学习的零样本识别.zip

    《大数据原理》LSH算法实现

    用map-reduce的形式实现了LSH算法

    Text-2024-05-09 17-11-33.txt

    Text-2024-05-09 17-11-33.txt

    node-v6.14.4-linux-armv6l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于springboot的电影院订票管理系统

    开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我v:19306446185 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! https://img-blog.csdnimg.cn/direct/e73dc0ac8d27434b86d886db5a438c71.jpeg

    基于深度学习的舌象诊断系统源码+文档说明.zip

    基于深度学习的舌象诊断系统源码+文档说明.zip

    2023-04-06-项目笔记 - 第一百二十八阶段 - 4.4.2.126全局变量的作用域-126 -2024.05.09

    2023-04-06-项目笔记-第一百二十八阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.126全局变量的作用域_126 - 2024-05-09

    深度学习入门-基于python的理论与实现.zip

    深度学习入门-基于python的理论与实现.zip

    基于python的气象数据处理

    数据处理 |--- 处理气象数据(nc文件) 操作说明: nc 文件命名为:deal_nc.nc,放到data目录下 1、 执行parse_nc.py,解析nc文件,同时在data目录下生成.npy数据文件 2、 执行draw_data.py ,获取.npy数据,并绘制图形

    TPE5608通讯管理机底层

    TPE5608通讯管理机底层

    机器学习,深度学习基础模型实现,基础组件,便于快速复用与集成.zip

    机器学习,深度学习基础模型实现,基础组件,便于快速复用与集成.zip

    node-v6.5.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v7.0.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    医院机房建设清单明细及报价.xls

    文章摘要 智慧医院智能化系统建设方案旨在通过智能化手段提升医院的安全性、舒适性、便捷性和效率。该方案规划了四大类子系统:平台、应用、节能和安全,以打造一个高效的医疗环境。 信息设施系统:包括综合布线系统、信息网络系统、多媒体会议系统等,旨在为医院提供稳定、高速的网络服务。综合布线系统采用6类非屏蔽铜缆和光纤,支持多种业务信息的传输。信息网络系统采用以太网交换技术和树型网络结构,确保网络的稳定性和安全性。 信息化应用系统:包括信息查询系统、分诊排队叫号系统、ICU探视系统等,通过信息技术提高医疗服务的质量和效率。信息查询系统便于病员及家属查询医院信息,分诊排队叫号系统优化就诊流程,ICU探视系统通过音视频技术实现远程探视和监护。 安全防范系统:针对医患关系敏感、医疗纠纷、医护人身安全等问题,设计了安防音视频监控系统、电子巡更系统、门禁系统等,以提高医院的安全管理水平。安防音视频监控系统在关键区域设置监控摄像机,电子巡更系统确保巡更人员按时按路线完成任务,门禁系统通过权限管理控制人员出入。 机房建设工程:包括机房配电系统、防雷接地系统、消防系统等,确保机房设备的安全稳定运行。机房供配电系统采用普通电源和不间断电源,消防系统采用无管网七氟丙烷气体灭火系统,防雷系统采用三级防雷措施,机房空调系统保持适宜的温度和湿度。 方案特色:紧扣标准、安全简便、统一融合、可视操作、事前预防、智能管控。通过智能化系统的设计和实施,医院能够更有效地进行安全管理,提高医疗服务质量,同时降低维护成本和提升运营效率。

    da_1715269209522..apk

    da_1715269209522..apk

    node-v6.9.5-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    typescript-3.7.6.tgz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于上下文特征,使用机器学习以及深度学习的方法对复杂长句进行切分

    深度学习(也称为深度结构化学习或分层学习)是基于人工神经网络的更广泛的机器学习方法族的一部分。学习可以是有监督的、半监督的或无监督的。[1][2][3] 深度学习架构,例如深度神经网络、深度信念网络、循环神经网络和卷积神经网络,已经被应用于包括计算机视觉、语音识别、自然语言处理、音频识别、社交网络过滤、机器翻译、生物信息学、药物设计、医学图像分析、材料检查和棋盘游戏程序在内的领域,在这些领域中,它们的成果可与人类专家媲美,并且在某些情况下胜过人类专家。[4][5][6] 神经网络受到生物系统中信息处理和分布式通信节点的启发。人工神经网络与生物大脑有各种不同。具体而言,神经网络往往是静态和象征性的,而大多数生物的大脑是动态(可塑)和模拟的大多数现代的深度学习模型基于人工神经网络,特别是卷积神经网络(CNN),尽管它们也可以包括命题公式或在深度生成模型中逐层组织的潜变量,例如深度信念网络和深度玻尔兹曼机中的节点。[11] 在深度学习中,每一级学习将其输入数据转换成稍微抽象和复合的表示。在图像识别应用中,原始输入可以是像素矩阵;第一代表层可以提取像素并编码边缘;第二层可以组成和编码边缘

    app.js

    app.js

    node-v18.13.0-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics