Elasticsearch - Избегайте совпадений на основе слов и нечетких совпадений при сопоставлении фразы - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть запрос, который выполняет поиск по фразе, уровню слова и нечеткости искомых слов.Есть ли способ, где я могу ограничить слова и нечеткие совпадения, когда точная фраза совпадает?Разработан запрос:

PUT test/_doc/1
{
  "field1": "this is a test query - query",
  "field2": "best rest vest pest"
}

GET test/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "multi_match": {
            "query": "this is a test query",
            "type": "phrase",
            "slop": "2",
            "fields": []
          }
        },
        {
          "multi_match": {
            "query": "this is a test query",
            "analyzer": "whitespace",
            "fields": []
          }
        },
        {
          "multi_match": {
            "query": "this is a test query",
            "analyzer": "whitespace",
            "fuzziness": "AUTO",
            "fields": []
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "type": "unified",
    "fields": {
      "*": {}
    }
  }
}

Получен результат (только выделение):

"field1": [" this равно a test query - query"]," field2 ": [" best rest жилет вредитель"]

Я не хочу, чтобы" лучший "," отдых "," жилет "и" вредитель "были выделены, когда" этотестовый запрос "фраза соответствует

1 Ответ

0 голосов
/ 20 декабря 2018

Поместите поиск фразы в must и оставьте два других условия в should.Планировщик запросов должен быть достаточно умен, чтобы понять это за вас.

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