Lucene基本语法

1 篇文章 0 订阅
1 篇文章 0 订阅

#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的权重为2
hello^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:/&, 类似的有+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值