ElasticSearch - 模糊词的提升分数

时间:2014-10-24 14:30:16

标签: elasticsearch fuzzy-search boosting

我想对用户搜索词进行模糊搜索(apple iphone 5s)。我想给第一个(苹果)给予更多的分数值,对第二个给予更少的分数等等。

我从下面给出的查询开始,但没有像我预期的那样工作:

{
  "query": {
    "fuzzy_like_this_field": {
      "name": {
        "like_text": "appla^4 iphane^2 5^1",
        "max_query_terms": 12
      }
    }
  },
  "fields": "name",
  "sort": {
    "_score": {
      "order": "desc"
    }
  }
}

我可以知道如何编写此查询吗?

1 个答案:

答案 0 :(得分:1)

我找到了答案。

{ 
   "query" : { 
      "bool" : { 
         "should" : [ 
            { 
               "fuzzy" : { 
                  "name" : { 
                     "min_similarity" : 0.5, 
                     "boost" : 4, 
                     "value" : "appla", 
                     "prefix_length" : 0 
                  } 
               } 
            }, 
            { 
               "fuzzy" : { 
                  "name" : { 
                     "min_similarity" : 0.1, 
                     "boost" : 2, 
                     "value" : "iphane", 
                     "prefix_length" : 1 
                  } 
               } 
            } , 
            { 
               "fuzzy" : { 
                  "name" : { 
                     "min_similarity" : 0.1, 
                     "boost" : 1, 
                     "value" : "5", 
                     "prefix_length" : 1 
                  } 
               } 
            }
         ] 
      } 
   } 
}