Lucene查詢語法匯總


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

到這就講完了,是不是覺得超簡單,驚不驚喜,意不意外呀~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM