Отключает ли использование нечеткости поиск префикса в simple_query_string - PullRequest
0 голосов
/ 27 мая 2020

При использовании simple_query_string с оператором префикса * и значением нечеткости ~N в том же слове поиск по префиксу кажется отключенным.

{
  "query": {
    "simple_query_string": {
      "query": "Abcd*~2",
      "fields": ["name"]
    }
  }
}

Совершенно очевидно, что префикс отключается всякий раз, когда вы устанавливаете нечеткость на 0 и запрос становится Abcd*~0, тогда нет ни поиска по префиксу, ни нечеткости.

Это не упоминается в docs, поэтому я не уверен, что делаю это неправильно.

Я пробовал:

  • поменять местами порядок операторов: Abcd~2* - в _explain это вводит варианты нечеткости, но опускает оператор префикса
  • с использованием скобок для приоритета: (Abcd*)~2 - в _explain используется префикс, но опускается оператор нечеткости 1
  • дублирование слова: (Abcd* Abcd~2) - это работает, очевидно, показывает воссоединение обоих запросов вместо композиции обоих эффектов 2 .

1 Я предполагаю, что в этом случае ~2 не следует интерпретировать как операцию SLOP erator, потому что нет фразы (без кавычек).

2 Я понимаю, что наложение этих эффектов может генерировать слишком много возможных вариантов - fuzzy добавляет 50 вариантов, а затем выполняет поиск по префиксу для каждого из них , что

1 Ответ

1 голос
/ 27 мая 2020

Согласно строке запроса docs

Смешивание операторов нечетких и подстановочных знаков не поддерживается. При смешивании один из операторов не применяется. Например, вы можете искать приложение ~ 1 (нечеткое) или приложение * (подстановочный знак), но при поиске приложения * ~ 1 не применяется оператор нечеткости (~ 1).

Он учитывает либо подстановочный знак или нечеткий, в зависимости от того, что будет первым. Для Abcd ~ 2 * просто возвращаются все документы

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