全文搜尋兩個最重要的方面是:相關性, 分析。
一旦談論相關性或分析這兩個方面的問題時,我們所處的語境是關於查詢的而不是過濾。
match:單個詞查詢
get /my_index/my_type/_search}}
步驟:1.分析字段型別,是string。2.分析查詢字串,得到乙個單詞quick。3.用term查詢,在倒排索引中查詢quick。4.為文件評分。
match:多個詞查詢
get /my_index/my_type/_search}}
match
查詢必須查詢兩個詞(["brown","dog"]
),它在內部實際上先執行兩次term
查詢,然後將兩次查詢的結果合併作為最終結果輸出。
上面的查詢,哪怕只有乙個brown或者是乙個dog也會匹配。
如果要求一定要同時出現brown和dog兩個詞,則需要operator操作符。
get /my_index/my_type/_search}}}
用minimum_should_match指定必須匹配的詞項數。可以是百分比。
get /my_index/my_type/_search}}}
組合查詢:
get /my_index/my_type/_search},
"must_not
": },
"should
": [},}
]}
}}
should語句的條件不是必須滿足的,但是如果滿足,則會增加文件的分數,即認為其更相關。
可以用minimum_should_match限制必須滿足should的條件數。
get /my_index/my_type/_search}, },}],
"minimum_should_match
": 2
} }
}
下面的兩個查詢是等價的:
}}
},},}],"minimum_should_match
": 2
}}
下面兩個查詢等價:
}}
},}]}}
用boost引數提高should條件的重要性。
我們想讓包含lucene
的有更高的權重,並且包含elasticsearch
的語句比lucene
的權重更高
get /_search}},"should
": [
}},}}]}
}}
boost
引數被用來提公升乙個語句的相對權重(boost
值大於1
)或降低相對權重(boost
值處於0
到1
之間)
原文後面還介紹了分析器和資料過少時的相關度問題。
ES 學習2 搜尋
1.空搜尋 返回所有索引下的所有文件 get search 設定超時。timeout 不是停止執行查詢,它僅僅是告知正在協調的節點返回到目前為止收集的結果並且關閉連線。在後台,其他的分片可能仍在執行查詢即使是結果已經被傳送了。get search?timeout 10ms 2.多索引,多型別 sea...
ES 學習2 搜尋
1.空搜尋 返回所有索引下的所有文件 get search 設定超時。timeout 不是停止執行查詢,它僅僅是告知正在協調的節點返回到目前為止收集的結果並且關閉連線。在後台,其他的分片可能仍在執行查詢即使是結果已經被傳送了。get search?timeout 10ms 2.多索引,多型別 sea...
Lucene全文搜尋學習筆記(二)
luceneutil的編寫,主要是對document2bean以及bean2document操作的封裝。寫的不完善,先學完lucene再說。public class luceneutil catch exception e param obj 傳入的物件,用到反射將field存入索引庫 return...