一、模糊查询
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
分享到:
相关推荐
lucene的查询语法事例.
用到的工具 jsoup+spring+struct+DButil+mysql+lucene 可以配置采集网站的图片,包含分组统计,相同数据合并功能,主要是给群内成员来个demo,让大家有个学习的demo 小试牛刀、临时写的,莫吐槽 需要用到mysql...
24 Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser(1)
lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合
Tripod介绍Tripod用于对文本数据的实时匹配分析,其语法主要兼容了lucene语法,并做了微调。在很多文本处理的应用中,会有类似数据订阅的需求,即将客户关注的数据推送给客户。一种典型的实现是,我们会根据用户...
lucene表达式查询示例和表达式语法详解
Java使用 lucene-core-8.7.0 实现全文检索等功能
js-solr-highlighter 一个JavaScript库,用于基于lucene / solr查询语法中的查询突出显示HTML文本在浏览器或Node.js环境中运行基于和构建一般的突出显示过程为: 使用Lucene语法从查询中得出要突出显示的文本突出...
xLucene-可扩展Lucene查询语法解析器和执行器 源代码:()-() 文档:( )-( ) 其他-各种配套 贡献 欢迎提出请求。 对于重大更改,请先打开一个问题以讨论您要更改的内容。 请确保适当更新测试。 执照 。 ...
把用户输入的查询字符串封装成Lucene能够识别的Query对象。 3) Filter: 用来过虑搜索结果的对象。 4) TopDocs: 代表查询结果集信息对象。它有两个属性: a) totalHits: 查询命中数。 b) scoreDocs: 查询结果信息...
luqum - Python 中的 lucene 查询解析器,使用 PLY “luqum”(如在 LUcene QUery Manipolator 中)是一种用于解析在编写的并构建抽象语法树以检查、分析或以其他方式操作搜索查询的工具。 它可以丰富 Lucene Query ...
尽管Amazon Cloudsearch的2011 API版本不支持Lucene,但更新的2013 API修订版本本机支持Lucene样式查询,因此,除了尚未升级到新API版本的使用者之外,不需要此库。 概述 l2cs “ lucene到CloudSearch”-是用于将...
6) queryParser模块:负责查询语句的语法分析。提供了解析查询语句的QueryParser类 7) util模块:包含一些公共工具类。 5. 创建索引 1) IndexWriter:索引写出器 a) 构造方法: IndexWriter(Directory d, ...
lucene的下载安装和相关的索引创建,分词查询等等,查询语法和IK中文分词解析器的使用
Lucene与SQL对比学习,适用于新手
lucene分析,介绍了lucne建立索引以及查询的过程,包括语法分析器,过滤器,切词器,有想了解lucene的同学可以从中获取到自己想要的东西
支持Lucene的查询语法描述 支持各种文本标记器 支持多种语言的多种词干 文本输出是彩色的或由可自定义标签分隔 支持将文件名打印为超链接,以供单击以打开(检查对您的终端的支持) 文本输出支持模板 评分模式...
代码涉及sqlserver已改为mysql语法规则 经过对搜索引擎的研究同时与Lucene自身的特性相结合,搜索引擎的设计与实现需要实现的功能阐述如下: (1)支持桌面文件搜索,格式包括txt、doc、xls和ppt; (2)支持分词...
Lucene.Net 源搜索引擎源代码 使用说明: 一、在IIS上建立虚拟目录,指向web 二、Web\Data\Config.xml 配置索引目录 三、运行Web\Data\IndexFiles.exe 建立文件索引(自己也可以写一个批处理,定时更新索引) 四、...