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为每一个文档。我们会在后面的章节讨论具体的细节
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章