Lucene是目前最为流行的开源全文搜索引擎工具包,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
我们平时使用kibana、阿里云的日志查询或者其他一些lucene二次开发的产品,几乎都支持lucene语法。
下面给大家演示各种查询方式,更多请参考 Apache Lucene - Query Parser Syntax

一、单词查询

直接使用单词,例如chenqionghe

多个单词,可以用逗号或者空格隔开,例如chenqionghe,活动

可以指定字段:空格来查询,例如page: 18content:"sport"

二、通配符查询

  • ?匹配单个字符
  • *匹配0或多个字符

例如muscle?能匹配到muscles

搜索hi*er

搜索*er

三、模糊查询

~:在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词
例如first~能匹配到错误的单词frist

可以在~后面添加模糊系数,例如first~0.8,模糊系数[0-1],越靠近1表示越相近,默认模糊系数为0.5。

四、近似查询

在短语后面加上~,可以搜到被隔开或顺序不同的单词
"life movement"~2表示life和movement之间可以隔开2两个词

五、范围查询

  • page: [2 TO 8]
  • page: {2 TO 8}
    []表示端点数值包含在范围内,{}表示端点不包含在范围内

搜索第2到第8页,包含两端点page: [2 TO 8]

搜索第2到第8页,不包含两端点page: {2 TO 8}

搜索第2到第8页,包含起始不包含末端page: [2 TO 8}

六、优先级查询

如果单词的匹配度很高,一个文档中或者一个字段中可以匹配多次,那么可以提升该词的相关度。使用符号^提高相关度。

默认为1,可以为0~1之间的浮点数,来降低优先级

七、逻辑操作

  • AND:逻辑与,也可以用&&代替
  • OR:逻辑或,也可以使用||代替
  • NOT:逻辑非,也可以使用!代替
  • +:必须包含
  • -:不能包含

muscle AND easy,muscle和easy必须同时存在

muscle NOT easy,muscle存在easy不存在

muscle OR easy,muscle或easy存在

例如+life -lies:必须包含life,不包含lies

八、括号分组

可以使用小括号对子句进行分组,构造更复杂的查询逻辑
chenqionghe OR (生命 AND 运动)

同时,也可以在字段中使用小括号分组,例如content:(+chenqionghe +"muscle")

九、转义特殊字符

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
这些字符需要转义
例如\(1\+1\)\:2用来查询(1+1):2

到这就讲完了,是不是觉得超简单,惊不惊喜,意不意外呀~

Lucene查询语法汇总的更多相关文章

  1. query_string查询支持全部的Apache Lucene查询语法 低频词划分依据 模糊查询 Disjunction Max

    3.3 基本查询3.3.1词条查询 词条查询是未经分析的,要跟索引文档中的词条完全匹配注意:在输入数据中,title字段含有Crime and Punishment,但我们使用小写开头的crime来搜 ...

  2. Lucene查询语法详解

    Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...

  3. kibana使用(ELK)、Lucene 查询语法

    Lucene查询 Lucene查询语法以可读的方式书写,然后使用JavaCC进行词法转换,转换成机器可识别的查询. 下面着重介绍下Lucene支持的查询: Terms词语查询 词语搜索,支持 单词 和 ...

  4. ELK:kibana使用的lucene查询语法【转载】

    kibana在ELK阵营中用来查询展示数据 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 全文搜索 在搜索栏输入login,会返回所有字段值中包含login的文档 使 ...

  5. ELK:kibana使用的lucene查询语法

    kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 kibana4官方演示页面 全文搜索 在搜索栏输入login,会返回所有字段值 ...

  6. kibana使用的lucene查询语法

    kibana在ELK阵营中用来查询展示数据elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 kibana4官方演示页面 全文搜索 在搜索栏输入login,会返回所有字段值 ...

  7. lucene查询语法简介

    为什么要介绍lucene:我们在ELK中搜索相关日志的时候,搜索语言需要遵循Lucene才可以匹配到需要的信息 什么是Lucene:Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件 ...

  8. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

  9. Lucene学习总结之八:Lucene的查询语法,JavaCC及QueryParser 2014-06-25 14:25 722人阅读 评论(1) 收藏

    一.Lucene的查询语法 Lucene所支持的查询语法可见http://lucene.apache.org/java/3_0_1/queryparsersyntax.html (1) 语法关键字 + ...

随机推荐

  1. JsonPath入门教程

    有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...

  2. Base64基础知识

    转载自百度百科:http://baike.baidu.com/link?url=tI0FbG-ALTTNhRsaQHWXqdVWQDCq4bwd5Xsc0m46M8DKZ5jJyVWnr3IvTprh ...

  3. FPGA开平方的实现

    3种方法: 1.JPL近似的实现方法 `timescale 1ns / 1ps )( clk, syn_rst, dataa, datab, ampout); input clk; :] dataa; ...

  4. verilog乘法器的设计

    在verilog编程中,常数与寄存器变量的乘法综合出来的电路不同于寄存器变量乘以寄存器变量的综合电路.知乎里的解释非常好https://www.zhihu.com/question/45554104, ...

  5. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-mock(8)

    mock, 较7属于代码优化 # -*- coding: utf-8 -*- # @Time : 2020/2/12 8:40 # @File : learn_mock_8.py # @Author: ...

  6. Qt QString 与 QByteArray 的转换

    QString转换为QByteArray QByteArray byte; QString string; byte = string.toAscii(); QByteArray 转换为 QStrin ...

  7. 密码子演化假说|凝固事件假说|立体化学假说|共进化假说|代谢途径相关性假说|四重兼并|假四重兼并|最小损伤原则|AU-rich|GC-rich|逐步进化假说|分子机制进化假说

    生命组学 将密码子表重排后发现,嘌呤嘧啶含量不同,密码子的氨基酸种类由第一二位决定,同时第三位变化大却没有蛋白质层面上实质性的改变,这说明第三位氨基酸是用于维持氨基酸组成不发生变化同时保证蛋白质稳定性 ...

  8. Java IO: RandomAccessFile

    原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) RandomAccessFile允许你来回读写文件,也可以替换文件中的某些部分.FileIn ...

  9. Maven基本概念和操作

    最近在学Java,找来一个开源项目练手,它是用 Spring Boot 搭建的框架,于是去学 Spring Boot,然而 Spring Boot 需要有 Spring 框架和 Maven 的使用经验 ...

  10. springboot oauth 鉴权之——password鉴权相当于jwt鉴权模式

    近期一直在研究鉴权方面的各种案例,这几天有空,写一波总结及经验. 第一步:什么是 OAuth鉴权 OAuth2是工业标准的授权协议.OAuth2取代了在2006创建的原始OAuthTM协议所做的工作. ...