ElasticSearch--Term-Based VS Full-Text

所有的訪問執行關聯度計算,但並不是所有訪問都有一個分析階段。除了一些特定查詢例如Bool或者是function_score查詢,這些不再文本上執行。文本訪問可以被分成兩個部分:

Term-based queries

Queries 像term或者是fuzzy queries 是一種低水平訪問,沒有分析模塊。它們在單個term上執行。一個term query for foo 尋找具體term 在反向索引中, 並且計算TF/IDF 相關度_score 給每一個包含該term的文檔
記住term query 在僅僅反向索引中尋找具體的term是很重要的。它不會匹配像foo 或者是FOO這樣的值。如果你索引[“Foo”,”Bar”]在具體的not_analyzed field,或者Foo Bar在analyzed field,兩者都會導致 2個 terms Foo 和 Bar 在反向索引中。

Full-text queries

像match或者query_string是高逼格的訪問,請理解field的映射

  1. 如果你用她們query date 或者 integer filed, 它們會把queryString 當成date 或者是integer類型
  2. 如果你query exact value(not_analyzed)string field,它會把真個字符串當成一個單個term
  3. 但是如果你query a full-text(analyzed) field, 它會第一步通過合適的分析器去訪問字符串 然後去生成一個待訪問的term 列表,一旦term列表已經就緒,它會執行一個合適的低水平query, 然後把結果組成起來,並且生成一個最終的相關度score爲每一個文檔。我們會在後面的章節討論具體的細節
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章