ElasticSearch - повышение оценки за нечеткие слова

Я хочу выполнить нечеткий поиск по пользовательским поисковым словам (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 ответ

Я нашел ответ.

{ 
   "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 
                  } 
               } 
            }
         ] 
      } 
   } 
} 
Другие вопросы по тегам