Lucene查询语法汇总

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

Lucene查询语法汇总

雪山飞猪   2020-03-16 我要评论
[toc] Lucene是目前最为流行的开源全文搜索引擎工具包,提供了完整的查询引擎和索引引擎,部分文本分析引擎。 我们平时使用kibana、阿里云的日志查询或者其他一些lucene二次开发的产品,几乎都支持lucene语法。 下面给大家演示各种查询方式,更多请参考 [Apache Lucene - Query Parser Syntax](https://lucene.apache.org/core/2_9_4/queryparsersyntax.html) # 一、单词查询 直接使用单词,例如`chenqionghe` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234856582-1851434368.png) 多个单词,可以用逗号或者空格隔开,例如`chenqionghe,活动` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234901518-1016425009.png) 可以指定`字段:空格`来查询,例如`page: 18`、`content:"sport"` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234905624-691688890.png) ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234908816-1069483712.png) # 二、通配符查询 * ?匹配单个字符 * *匹配0或多个字符 例如`muscle?`能匹配到muscles ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234914781-1822260732.png) 搜索`hi*er` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234917849-750005955.png) 搜索` *er` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234922896-1189094384.png) # 三、模糊查询 `~`:在一个单词后面加上~启用模糊搜索,可以搜到一些拼写错误的单词 例如`first~`能匹配到错误的单词frist ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234932823-76038304.png) 可以在~后面添加模糊系数,例如`first~0.8`,模糊系数[0-1],越靠近1表示越相近,默认模糊系数为0.5。 # 四、近似查询 在短语后面加上`~`,可以搜到被隔开或顺序不同的单词 `"life movement"~2`表示life和movement之间可以隔开2两个词 ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234937825-1556591661.png) # 五、范围查询 * `page: [2 TO 8]` * `page: {2 TO 8}` `[]`表示端点数值包含在范围内,`{}`表示端点不包含在范围内 搜索第2到第8页,包含两端点`page: [2 TO 8]` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234948875-447393704.png) 搜索第2到第8页,不包含两端点`page: {2 TO 8}` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234953325-1088542794.png) 搜索第2到第8页,包含起始不包含末端`page: [2 TO 8}` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315234958222-693100396.png) # 六、优先级查询 如果单词的匹配度很高,一个文档中或者一个字段中可以匹配多次,那么可以提升该词的相关度。使用符号`^`提高相关度。 ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235024112-60322602.png) ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235029784-1303930834.png) 默认为1,可以为0~1之间的浮点数,来降低优先级 # 七、逻辑操作 * `AND`:逻辑与,也可以用`&&`代替 * `OR`:逻辑或,也可以使用`||`代替 * `NOT`:逻辑非,也可以使用`!`代替 * +:必须包含 * -:不能包含 如`muscle AND easy`,muscle和easy必须同时存在 ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235038749-263563406.png) `muscle NOT easy`,muscle存在easy不存在 ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235044128-6368951.png) `muscle OR easy`,muscle或easy存在 ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235049567-1599177641.png) 例如`+life -lies`:必须包含life,不包含lies ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235053447-1921880544.png) # 八、括号分组 可以使用小括号对子句进行分组,构造更复杂的查询逻辑 `chenqionghe OR (生命 AND 运动)` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235058743-417702340.png) 同时,也可以在字段中使用小括号分组,例如`content:(+chenqionghe +"muscle")` ![](https://img2020.cnblogs.com/blog/662544/202003/662544-20200315235103204-1823207467.png) # 九、转义特殊字符 `+ - && || ! ( ) { } [ ] ^ " ~ * ? : \` 这些字符需要转义 例如`\(1\+1\)\:2`用来查询(1+1):2 到这就讲完了,是不是觉得超简单,惊不惊喜,意不意外呀~

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们