跨字段实体搜索(Cross-fields Entity Search)
而address实体则是像下面这样:
用户也许会搜索名为”Peter Smith”的人,或者名为”Poland Street W1V”的地址。每个查询的单词都出现在不同的字段中,因此使用dis_max/best_fields查询来搜索单个最佳匹配字段显然是不对的。
一个简单的方法
对每个字段重复查询字符串很快就会显得冗长。我们可以使用multi_match查询进行替代,然后将type设置为most_fields来让它将所有匹配字段的分值合并:
使用most_fields存在的问题
- 它被设计用来找到匹配任意单词的多数字段,而不是找到跨越所有字段的最匹配的单词。
- 每个字段的词条频度是不同的,会互相干扰最终得到较差的排序结果。