Запросите результаты фразы multi_match впереди, поиск отдельных слов - на втором месте - PullRequest
0 голосов
/ 08 января 2019

Я хочу найти три поля: title^3 с усилением 3 , desc^2 с усилением 2 и body. Допустим, я ищу строка refuse eating, я хочу, чтобы статьи, которые содержат оба слова (или больше) в любом из упомянутых полей, показывались первыми, а затем статьи, которые содержат любое из слов, которые идут вторыми.

Я пробовал с must s multi_match, но первые результаты содержат только одно слово, другое слово отсутствует ни в одном из полей.

Вот код, который я пробовал:

GET my_index/_search
{
  "query": {
    "bool": {
      "must_not": [
        {"exists": {"field": "deleted"}}
      ],
      "must": [
        {
          "multi_match": {
            "query": "refuse eating",
            "fields": [
              "title^3",
              "desc^2",
              "body"
            ],
            "type": "best_fields"
          }
        }
      ],
      "filter": [
        {"term": {"kind": "article"}},
        {"term": {"status": "published"}}
      ]
    }
  }
}

Я ищу что-то вроде этого:

  • article1 : содержит строку refuse eating в title (или body), это должно быть на первом месте.

  • article2 : имеет слово refuse в desc и слово eating в body, это второе после.

  • article3 : содержит только одно слово из строки запроса refuse или eating, это должно быть последним.

Я хочу, чтобы результаты были в следующем порядке:

  1. Article1
  2. 1054 * Статья 2 *
  3. 1056 * Статья 3. *

Заранее спасибо.

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