读《深入理解Elasticsearch》点滴-multi_match
区分按字段为中心的查询、词条为中心的查询
注意高频词项被高得分词项(冷僻的词项)取代的问题
1、best_fields :适用于多字段查询且查询相同文本;得分取其中一个字段的最高分。可通过tie_breaker(取值0~1)将低得分字段的分数引入的最终得分中。best_fields可与dis_max查询互换。ES内部转换为dis_max查询
operator(此查询中慎用)、minimum_should_match 作用于每个字段的子查询内部中。
例如:
"query":"complete conan doyle"
"field":["title","author","characters"]
"type":"best_fields"
"operator":"and"
等价于:
(+title:complete +title:conan +title:doyle) | (+autorh:complete +author:conan +autore:doyle) | (+characters:complete +characters:conan +characters:doyle)
2、corss_fields:适用于期望查询文本中所有的词都在文档中出现,而又不介意在文档中哪些字段中出现。operator作用于子查询与子查询之间的连接中
应用场景:信息被索引时分割到不同字段中,如住址,姓、名。多数情况下opertaotr使用and
上述查询等价于:
+(title:complete author:complete charactors:complete) +(title:conan author:conan charators:conan) +(title:doyle author:doyle charactor:doyle)
3、most_fields:适用于检索多处包含相同文本,但是恩本分析处理方式不同的文档。多数情况下operator使用or
ES内部转化为bool查询
应用场景:多语言处理
..。。
4、phrase:内部转换为dis_max,同best_fields
5、parase_prefix:内部转换为dis_max,同best_fields