Elasticsearch: Должны включать все слова в поиск, если все существуют, но игнорировать одно или два, если они не существуют? - PullRequest
0 голосов
/ 03 марта 2020

Я надеюсь, что то, что я пытаюсь объяснить, имеет смысл, и есть способ, которым я мог бы достичь этого.

В настоящее время я ищу в 40 миллионах документов с таким запросом:

GET /all/_search
{
  "query": {
    "match": {
      "full_text": {
        "query": "insert ten or twelve words here to search",
        "operator": "and"
      }
    }
  }
}

Теперь я хочу вернуть только документы, в которых их 'full_text' включает все слова в запросе. Я могу добиться этого с помощью приведенного выше фрагмента.

Мой вопрос заключается в том, что когда совпадений нет вообще, но, например, удаление «десятки» даст один результат, есть ли способ настроить поиск на который? Т.е. сказать ES «стремиться к 100% совпадению, но если ничего не найдено, то 90% вполне подойдут»!

Надеюсь, это понятно :)

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете использовать предложение imum_should_match вместе с запросом на совпадение

{
  "query": {
    "match": {
      "text":{
        "query": "insert ten or twelve words here",
        "minimum_should_match":"90%"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...