Lucene是目前最為流行的開源全文搜索引擎工具包,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。
我們平時使用kibana、阿里雲的日志查詢或者其他一些lucene二次開發的產品,幾乎都支持lucene語法。
下面給大家演示各種查詢方式,更多請參考 Apache Lucene - Query Parser Syntax
一、單詞查詢
直接使用單詞,例如chenqionghe
多個單詞,可以用逗號或者空格隔開,例如chenqionghe,活動
可以指定字段:空格
來查詢,例如page: 18
、content:"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
到這就講完了,是不是覺得超簡單,驚不驚喜,意不意外呀~