Повторные значения в массиве Elasticsearch и оценке запросов - PullRequest
2 голосов
/ 24 сентября 2019

У меня есть два документа с полем country, которые могут содержать повторяющиеся значения, например

Doc1:

country: [US, US, GB, US]

Doc2:

country: [US, GB]

Мне нужнозапрос, который при поиске country:US присваивает Doc1 более высокий балл, чем Doc2, поскольку US появляется несколько раз в поле country Doc1, в то время как он присваивает одинаковый результат двумдокументы при поиске country:GB, поскольку в обоих документах оно появляется одинаковое количество раз.Это достижимо с Elasticsearch?

1 Ответ

0 голосов
/ 25 сентября 2019

Если вы выполняете простой поиск совпадений по US

GET countryindex/_search
{
  "query": {
   "match": {
     "country": "US"
   }
  }
}

Это даст больше баллов для большей частоты элементов, поэтому [US, US, GB, US] получит больше баллов, чем "[US, ГБ] «Если вы будете искать« ГБ »->« [США, ГБ] », получите больше баллов, чем [США, США, ГБ, США], поскольку более короткая длина поля получает больше баллов.

Если вы хотите, чтобы количество совпадений было одинаковым, вы должны дать норм : false в вашем отображении.

{
  "properties": {
    "title": {
      "type": "text",
      "norms": false
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...