2

我想对用户搜索词(苹果 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"
    }
  }
}

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

4

1 回答 1

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 
                  } 
               } 
            }
         ] 
      } 
   } 
} 
于 2014-10-24T14:42:00.210 回答