Lucene基本语法
#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:/&, 类似的有+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
Lucene基本语法相关推荐
- lucene查询语法,适用于ELk:kibana查询
lucene查询语法,适用于ELk:kibana查询 Kibana在ELK中扮演着数据可视化角色,用来查询及展示数据: Elasticsearch查询采用的是luncene搜索引擎,其4过滤查询语法和 ...
- Lucene查询语法详解
Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...
- kibana 写两个查询条件_Kibana使用之Lucene的语法查询
转载地址 Kibana使用的查询语法是Lucene的查询语法,这里在使用Kibana的同事一定要注意,不然,在进行搜索的时候,你会抓狂的. 下面了解下Lucene的查询语法,了解了Lucene的查询语 ...
- Lucene查询语法和使用
Lucene查询语法和使用 (1)直接输入单词查询,比如输入Windows: 也可以根据一个关键词(key) 配上该关键词的值,精确查找,如选择关键词为ip,查找一个已知的ip地址: 也可以这样查询, ...
- Lucene查询语法
TermQuery 是最常用的查询对象,也是 Lucene 可以使用的许多复杂查询的基础.它用于根据区分大小写的密钥检索文档 Query query = new TermQuery(new Term( ...
- ELK:kibana使用的lucene查询语法
kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 kibana4官方演示页面 全文搜索 在搜索栏输入login,会返回所有字段 ...
- elk 搜索 语法_ELK:kibana使用的lucene查询语法
kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使 ...
- Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser
一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...
- 基于lucene语法的实时文本搜索与匹配--Tripod
Tripod是一款基于lucene语法实现的,可对文本数据进行实时匹配的开源工具,其工程路径为https://github.com/colorknight/tripod.git.在一定场景中,使用它, ...
最新文章
- rtmp 封包及消息
- Python脚本完美解决Linux环境解压.zip文件乱码问题
- mysql 基本操作(二)
- java 下对字符串的格式化
- mysql5.7编译安装路径_MySQL_MySQL 5.5/5.6/5.7及以上版本安装包安装时如何选择安装路径,安装环境需求:
自从昨天安 - phpStudy...
- 扫地机器人欠压检测电路_扫地机器人智能家居必备!靠传感器感知外界环境?...
- NLP《词汇表示方法(四)负采样》
- DNS递归查询与迭代查询
- 用友网络2021年净利润7.1亿元 同比减少28.2%
- JAVA ActiveMQ消息发送和接收
- SQL 2008 群集配置详尽攻略[3]—主节点备节点数据库安装
- JDK11无法启动VisualVM
- 二叉树遍历的一些非递归算法
- 培训php暑期,西安软件php暑假培训
- Linux动态频率调节系统CPUFreq之三:governor
- 未成年人勿进 谨以献给1980~1990出生的人(二)
- 用C语言对一元二次方程求解
- Dialog dismiss 流程
- 学院来信371:建立“可复制”+“可迭代”的投资系统
- 2020最新智能客服|聊天机器人算法、架构及应用分享