TairSearch是Tair團隊完全自研的全文檢索搜尋資料結構,採用和Elasticsearch相似的查詢文法。本文介紹如何在TairSearch中使用bool文法,實現複雜情境的查詢。
bool文法詳解
bool是TairSearch中支援複雜、組合查詢的文法,支援如下3種子句類型:
must:類似
AND
的語義,在must數組中的條件均為必要條件,查詢結果集必須命中must數組中的查詢條件。must_not:類似
NOT
的語義,查詢結果集必須不包含must_not數組中的查詢條件。should:類似
OR
的語義,在should數組中的條件均為可選條件。可搭配minimum_should_match參數使用,該參數表示至少需匹配多少個should查詢子句,若bool語句中只存在should語句,則該參數預設為1;若bool語句中還存在must或must_not語句,則該參數預設為0。若must和should語句同時命中某文檔,則該文檔會因為多次命中而增加文檔score值,並影響結果排名。
bool語句的查詢優先順序為must_not > must > should,同時,bool語句中可嵌套任何類型的子查詢語句,包含bool語句,可由此實現複雜情境的查詢。更多關於TairSearch的資訊,請參見Search。
操作範例
建立索引。
TFT.CREATEINDEX key '{ "mappings": { "properties": { "A": { "type": "keyword" }, "B": { "type": "keyword" }, "C": { "type": "keyword" } } } }'
添加文檔資料。
TFT.ADDDOC key '{ "A": "a", "B": "b", "C": "c" }'
查詢樣本。