Lucene基本语法
来源:互联网 发布:三星s4支持3g网络吗 编辑:程序博客网 时间:2024/06/17 14:00
Terms(文本匹配)
terrms分为两种,单词查询和词组查询。单词如“hello”,词组如“hello world”。他们可以用布尔运算符连接起来构成复杂查询。
#查询包含hello的结果hello#查询包含“hello world”的结果"hello world"
注意,词组查询时需要用”“将词组包括进来,不然会被拆分成两个单词进行查询
“hello world”
Fields(字段匹配)
字段类型的查询。Lucene的内部结构类似json格式,采用key、value的形式存储。因此通过key/value查询是必要的。他的基本语法是key:value。
#查询订单号为20171001111023232353的结果order_no:"20171001111023232353"
注意,当value为多个单词时,需要用”“修饰
#查询标题为“Do it right”的文章title:"Do it right"
Wildcard Searches(通配符匹配)
Lucene支持强大的通配符查询。
使用?表示匹配单个字符,*表示匹配0个以上的字符。
#查询名字为“蒙奇.*.路飞”的人,找出其中的冒牌货name:"蒙奇.?.路飞"
#找出“蒙奇.D”家族的所有人name:"蒙奇.D.*"
Note:通配符不能用于查询的第一个字符
Fuzzy Searches(模糊匹配)
模糊查询,Lucene的模糊查询不同于sql,他是找出与给定条件相近的结果来。比如查询Hello相近的词组,他会返回fellow,Helloween等词汇,并根据相似度打分,相似度分数范围为(0-1)。
#与Hello相似度大于0.5的结果Hello~0.5
Proximity Searches(相邻匹配)
用于搜索两个相隔一定距离的两个词组。
#搜索"hello","Tom"之间隔着10个单词的结果"hello Tom"~10
Range Searches(范围匹配)
#返回id在10到100氛围内的所有结果,包含id为10和100的结果id:[10 TO 100]
#返回id在10到100氛围内的所有结果,不包含id为10和100的结果id:{10 TO 100}
Boosting a Term (提升权重)
在查询结果中,Lucene会为每个结果打分,打分规则是Lucene认为该结果与查询条件的关联度。关联度越高打分越高。默认情况下每个词语的权重都是1,但实际中,可能每个词语的权重并不一样。我们可以通过”^”来修改。
#搜索包含hello和world的结果,并且hello的权重为2hello^2 world
Boolean Operators (布尔操作符)
Lucene 支持 “AND”, “+”, “OR”, “NOT” 和 “-” ,注意,这些操作符必须是大写。
AND
AND连接的查询条件必须全部满足,可以用”&&”替换
#查询航司为CA,id为100的记录carrier:CA AND id:100
+
+连接的查询必须满足,其他条件可以不满足 查询姓”张”的名字中可能带有”华”的名字,+张 华
OR
OR是默认连接符,默认情况下,Lucene会将句子拆分成单词并用OR连接起来查询,表示或者
#查询"张"或者"华"的名字:张 华张 OR 华
NOT
NOT表示从满足左边条件结果中去除右边条件。可用”!”替换
#查询航司为CA并且不再2017-01-01起飞的航班carrier:CA NOT flightDate:2017-01-01
-
与NOT类似,表示从满足左边条件结果中去除右边条件
Grouping(分组)
Lucene支持使用()来自定义查询条件的组合,以实现查询逻辑的自由组合。
#查询名字为"张三"或者"李四",性别为男且年龄在20到25之间的人(name:"张三" OR name:"李四") AND sex:man AND age:[20 TO 25]
Field Grouping(字段分组)
Lucene支持在字段匹配使用分组来组合搜索逻辑。
#查询年龄段为10到20和50到80的人群age:([10 TO 20] [50 TO 80])
注意:当需要搜索name包含”&”时,需要使用”/”做转义。比如name:/&, 类似的有+ - && || ! ( ) { } [ ] ^ ” ~ * ? : \
- Lucene基本语法
- lucene语法 lucene查询语法详解
- Lucene的查询语法!
- LUCENE查询语法
- Lucene查询语法简介
- lucene的查询语法
- Lucene查询语法详解
- Lucene查询语法
- lucene 高级语法详解
- Lucene查询语法详解
- lucene 查询语法
- Lucene查询语法详解
- Lucene查询语法详解
- Lucene查询语法详解
- lucene query语法详解
- Lucene查询语法
- Lucene Syntax (lucene查询语法详解)
- Lucene Syntax (lucene查询语法详解)
- RxJava基础操作
- 51nod 1202 子序列个数 (DP) 图解
- android studio 自定义view 带进度条的的圆 画弧 初学者最适合
- 【loli的胡策】联校11.5(lca)
- 定义与声明的区别
- Lucene基本语法
- sshError:java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorl
- Java 学习感受
- opencv(c++)基本绘图
- 11.3
- Linux文件打包与压缩
- three.js 02-04 之网格对象函数及属性
- LeetCode-Kth Largest Element in an Array
- python的读取纯文本文件的几种模式