我有弹性搜索索引与文档,其中包含两个字段:‘艺术家’和‘跟踪’。我如何管理搜索像‘深紫色烟雾’这样的查询,哪里‘深紫色’将是一个艺术家领域和‘烟雾’是一个开始的田径?我正试图这样做:
self.es.search(MultiMatchQuery(fields=['artist', 'name'], text='deep purple smoke', type='phrase_prefix'), 'mus', 'tracks')但是,我认为,是试图在艺术家和姓名字段中找到全文“深紫色烟雾”,而不是在“艺术家”和“姓名”字段中搜索每个单词,并返回包含最高结果的文档。
发布于 2014-03-13 15:21:41
您是正确的,它作为短语搜索,因为您将类型设置为'phrase_prefix'。而是使用另一种类型。我相信'most_fields'是最好的选择,尽管'best_fields'或'cross_fields'也可能是一个合理的选择。
每匹配文档
most_fields -查找与任何字段匹配的文档,并从每个字段组合_score。cross_fields --用相同的分析器处理字段,就像它们是一个大字段一样。查找任何字段中的每个单词。best_fields -查找与任何字段匹配的文档,但在最佳字段中使用_score。https://stackoverflow.com/questions/22381803
复制相似问题