ES влияние на релевантность результатов полнотекстового поиска

ES предполагается для использования в качестве полнототекстового поиска. Одно из требований - выдача результатов поиска сначала тех, кот. относятся к городу пользователя.
Город пользователя определяется через dadata. Это строка. Например "Москва". Каждый документ в индексе содержит поле localities, где хранится список городов.

"localities": [
            "Воронеж",
            "Адреевск",
            "Харьков"
          ]

Запрос сейчас делаю так:

POST /myindex/_search
{
  
  "query": {
    "query_string": {
      "query": "еда Воронеж",
      "analyze_wildcard" : true,
      "fields": [
"localities:^3"        
"categories^2",
        "workTypes^1",
         
      ]
    }
  }
}

Правильно я понимаю, что документ, где будет найдено слово "Воронеж" будет иметь более высокий _score?
ES версии 5.6

Почти. _score полученный в результате совпадения по полю localities будет умножен на 3 и потом добавлен к _score в остальных полях. То есть конечный результат для каждого документа будет score(workTypes) + score(categories) * 2 + score(localities) * 3

Игорь, спасибо.
Еще вопрос. Я использую query_string, а есть еще simple_query_string. Не уловил в чем разница. Не подскажете в двух словах?
В документации написано, что simple_query_string не вызывает exception. А когда может возникнуть exception?

Контроль над запросом. Можно контролировать по каким полям искать и ограничивать тяжелые операции типа *a*.

Попробуйте задать запрос типа Воронеж AND

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.