在Elasticsearch中提升查询字

mnd*_*mnd 6 elasticsearch

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

例如,我想搜索"明尼苏达州的医疗保健",我希望"明尼苏达州"比"医疗保健"更重要(因为我不想要其他州的医疗保健信息).

我发现最接近的是使用某种类型的custom_score查询,它允许你改变得分,也许我可以使用它来提升实际包含更重要的单词的任何东西.不确定这是否可行.

理想情况下,我可以通过编程方式执行此操作,其中包含对应用程序而言被认为"最重要"的单词列表,这些单词可以在传入查询中找到并"提升".

kee*_*ety 6

可能有多种方法可以实现这种方法,其中一种方法是使用query_string,您可以在其中为每个词提供提升

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

{ 
    "query" : {
        "query_string" : {
            "fields" : ["content", "name"],
            "query" : "Minnesota^2 health"
        }    
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 一个后续问题,您知道`multi_match` 查询是否可行吗?我很感兴趣,因为`multi_match` 将支持不同领域的部分结果。鉴于您上面的示例,“明尼苏达州”可能位于“内容”字段中,而“健康”可能位于“名称”字段中。谢谢。 (2认同)
  • @mnd 在多匹配中没有选项,但查询字符串允许在不同字段中获得部分结果,就像答案 https://www.elastic.co/guide/en/elasticsearch/reference/current/query 中的示例一样-dsl-query-string-query.html#_multi_field_2 (2认同)