【问题标题】:Search partial text in two fields in ElasticSearch在 ElasticSearch 的两个字段中搜索部分文本
【发布时间】:2014-03-13 23:21:41
【问题描述】:

我在弹性搜索中有索引,其中包含两个字段:“艺术家”和“曲目”。我如何管理诸如“深紫色烟雾”之类的查询的搜索,其中“深紫色”将是艺术家领域而“烟雾”是田径场的开始? 我正在尝试这样做:

self.es.search(MultiMatchQuery(fields=['artist', 'name'], text='deep purple smoke', type='phrase_prefix'), 'mus', 'tracks')

但是,我认为,ES 试图在艺术家和名称字段中查找全文“深紫色烟雾”,而不是在艺术家和名称字段中搜索每个单词,并返回包含最高结果的文档。

【问题讨论】:

    标签: lucene elasticsearch


    【解决方案1】:

    你是对的,它作为一个短语搜索,因为你将类型设置为'phrase_prefix'。请改用其他类型。我相信'most_fields' 会是最好的选择,虽然'best_fields''cross_fields' 也可能是一个合理的选择。

    the multi_match documentation:

    • most_fields - 查找与任何字段匹配的文档并结合每个字段的 _score。
    • cross_fields - 使用相同的分析器处理字段,就好像它们是一个大字段一样。查找任何字段中的每个单词。
    • best_fields - 查找与任何字段匹配的文档,但使用最佳字段中的 _score。

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 1970-01-01
      • 2020-10-29
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多