При использовании 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 вариантов, а затем выполняет поиск по префиксу для каждого из них , что