全文搜索
- 相似度計算
- 通過TF/IDF (see [relevance-intro]),地理位置接近算法,模糊相似度算法或者其他算法,用來給給定查詢條件的結果排序。
- 文本分析
- 通過把文本切割和歸一化後的詞元,去(a)生成倒排索引,或者去(b)查詢倒排索引。
詞條搜索 vs. 全文搜索
bool
和function_score
。
它們是boolean查詢和數值查詢。文本查詢可以分爲兩個種類:- 詞條查詢
-
低級別的
term
和fuzzy
查詢沒有文本分析,它們只是在單個詞條上查詢。列如詞條"Foo"
的term
查詢, 是在倒排索引種查找完全匹配的詞條,然後給每一篇包含這個詞條的文章做TF/IDF相似度打分。記住:詞條"Foo"
的term
查詢只是在倒排索引裏查找完全匹配的詞條,它不會匹配到"foo"
或者"FOO"
。 當你在not_analyzed
的域用["Foo","Bar"]
生成索引,或者在用whitespace
分析器的域用"Foo Bar"
生成索引, 它們都會在倒排索引裏生成兩個詞元"Foo"
和"Bar"
。 - 全文查詢
-
高級別的
match
和query_string
查詢能夠理解這些域的映射: * 如果在date
和integer
屬性的域,查詢文本會被當日期或者整數來對待。 * 如果在(not_analyzed
)屬性的文本域,查詢文本會被當做一個詞條來查詢。 * 但是,如果在(analyzed
)屬性的文本域,查詢文本會用恰當得分析器去產生詞條,而這些詞條都會被用來查詢。 一旦查詢得到這些詞條,它就用適當的低級查詢去執行每一個詞條,然後用查詢結果計算每一篇文章的相似度打分。 我們將在後面的章節中詳細介紹這個過程。
博客已搬家