Elasticsearch вложенный логический запрос - PullRequest
0 голосов
/ 13 января 2019

Документ с коричневыми и красными баллами выше, чем документ только с коричневым или красным?

GET /_search
{
  "query": {
    "bool": {
      "should": [
        { "term": { "text": "quick" }},
        { "term": { "text": "fox"   }},
        {
          "bool": {
            "should": [
              { "term": { "text": "brown" }},
              { "term": { "text": "red"   }}
            ]
          }
        }
      ]
    }
  }
}

1 Ответ

0 голосов
/ 13 января 2019

В большинстве случаев - да , будет набрано выше , если нет других отличий. Причина в том, что булевская оценка запросов суммирует баллы предложений друг друга.

Это означает, что weight(text:brown) будет добавлено к weight(text:red), что в целом приведет к более высокой оценке.

Разница, однако, в том, что каждый из этих разделов веса может отличаться для любого сопоставленного документа в зависимости от концепции tf-idf .

Общая рекомендация следующая: если вы сомневаетесь в том, как вы набрали баллы за запрос, вам следует использовать "explain": true в вашем json. Это поможет понять и отладить то, что произошло во время подсчета очков.

Дополнительная информация об API объяснения - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-explain.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...