【问题标题】:Boost a query word in Elasticsearch在 Elasticsearch 中提升查询词
【发布时间】:2015-05-28 04:31:25
【问题描述】:

Elasticsearch 允许您提升正在搜索的字段,但是否可以“提升”查询本身中特定单词的重要性?

例如,我想搜索“Minnesota health care”,并且希望“Minnesota”比“health care”更重要(因为我不想要其他州的医疗保健信息)。

我发现的最接近的方法是使用某种类型的custom_score 查询,它允许您更改评分,也许我可以使用它来提升实际上包含更重要的词的任何内容。不确定这是否可能。

理想情况下,我将能够以编程方式完成这一切,并列出一个被认为对应用程序“最重要”的单词,这些单词可以在传入的查询中找到并“提升”。

【问题讨论】:

  • 这意味着您想要与明尼苏达州匹配但不一定是医疗保健的文件?
  • 这意味着应该显示带有“Minnesota”和“health care”的文档,但任何其他“Minnesota”文档都会出现在其他“healthcare”文档之前。例如,“Minnesota car care”会出现在“Iowa health care”之前。希望这会澄清。

标签: elasticsearch


【解决方案1】:

可能有多种方法可以实现这一方法,即使用query_string,您可以在其中为每个单独的术语提供提升

下面的示例显示了一个查询,其中明尼苏达州的匹配提升了两倍:

{ 
    "query" : {
        "query_string" : {
            "fields" : ["content", "name"],
            "query" : "Minnesota^2 health"
        }    
    }
}

【讨论】:

  • 一个后续问题,您知道multi_match 查询是否可行?我很感兴趣,因为multi_match 将支持不同领域的部分结果。鉴于上面的示例,“明尼苏达州”可能位于“内容”字段中,“健康”可能位于“名称”字段中。谢谢。
  • @mnd 在多重匹配中没有选项,但查询字符串允许在不同字段中出现部分结果,就像答案中的示例 elastic.co/guide/en/elasticsearch/reference/current/…
  • 你说得对,我的数据不好,这让我觉得它没有在搜索其他字段。您的回答非常棒,感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多