span_not

Запрос Span not

Запрос span_not исключает диапазоны, которые пересекаются с другим запросом span. Вы также можете указать расстояние до или после исключенных диапазонов, в пределах которого совпадения не могут происходить.

Например, вы можете использовать запрос span_not для:

  • Поиска терминов, кроме тех случаев, когда они появляются в определенных фразах.
  • Совпадения диапазонов, если они не находятся рядом с определенными терминами.
  • Исключения совпадений, которые происходят в пределах определенного расстояния от других шаблонов.

Пример

Чтобы попробовать примеры в этом разделе, выполните шаги по настройке.

Следующий запрос ищет слово “dress”, но не когда оно появляется в фразе “dress shirt”:

GET /clothing/_search
{
  "query": {
    "span_not": {
      "include": {
        "span_term": {
          "description": "dress"
        }
      },
      "exclude": {
        "span_near": {
          "clauses": [
            {
              "span_term": {
                "description": "dress"
              }
            },
            {
              "span_term": {
                "description": "shirt"
              }
            }
          ],
          "slop": 0,
          "in_order": true
        }
      }
    }
  }
}

Запрос соответствует документу 2, потому что он содержит слово “dress” (“Beautiful long dress…”). Документ 1 не соответствует, потому что он содержит фразу “dress shirt”, которая исключена. Документы 3 и 4 не соответствуют, потому что они содержат вариации слова “dress” (“dressed” и “dresses”), а запрос ищет в сыром поле.

Ответ

Параметры

Следующая таблица перечисляет все параметры верхнего уровня, поддерживаемые запросами span_not.

Параметр Тип данных Описание
include Объект Запрос span, совпадения которого вы хотите найти. Обязательный параметр.
exclude Объект Запрос span, совпадения которого должны быть исключены. Обязательный параметр.
pre Целое число Указывает, что исключенный диапазон не может появляться в пределах указанного количества позиций токенов перед включенным диапазоном. Необязательный параметр. По умолчанию 0.
post Целое число Указывает, что исключенный диапазон не может появляться в пределах указанного количества позиций токенов после включенного диапазона. Необязательный параметр. По умолчанию 0.
dist Целое число Эквивалентно установке как pre, так и post на одно и то же значение. Необязательный параметр.