一尘不染

Spring搜索中同一字段上按类型的相关性

elasticsearch

有什么方法可以boost根据类型在同一字段上搜索结果?

我的基本提升是这样的:

GET _search
{
   "query": {
      "simple_query_string": {
         "query": "mangan",
         "fields":["_all", "title^6"]
      }
   }
}

但是对于其他一些文档,我希望标题不太重要,因此我尝试使用type作为前缀:

GET _search
{
   "query": {
      "simple_query_string": {
         "query": "mangan",
         "fields":[
            "_all",
            "DocumentationPage.title^6",
            "DocumentationPage.title^6"]
      }
   }
}

但是,这根本没有助益。作为最后的选择,我可以使用Funcsion / Script
Score
bu来避免这种情况。

例如,假设文档仅包含title字段。


阅读 241

收藏
2020-06-22

共1个答案

一尘不染

实现此目的的一种简单方法是将OP中的查询重写为dis-
max查询

elasticsearch 5.x的示例:

 {
   "query": {
      "dis_max": {
         "queries": [
            {
               "simple_query_string": {
                  "fields": [
                     "_all"
                  ],
                  "query": "mangan"
               }
            },
            {
               "bool": {
                  "filter": {
                     "type": {
                        "value": "DocumentationPage"
                     }
                  },
                  "must": [
                     {
                        "simple_query_string": {
                           "fields": [
                              "title^6"
                           ],
                           "query": "mangan"
                        }
                     }
                  ]
               }
            }
         ]
      }
   }
}
2020-06-22