Запросы на уровне термина в Elasticsearch: fuzzy запрос
Возвращает документы, содержащие термины, похожие на поисковый запрос, измеряемый расстоянием редактирования Левенштейна.
Расстояние редактирования - это количество изменений одного символа, необходимых для преобразования одного термина в другой. Эти изменения могут включать:
- Смена символа (box → fox)
- Удаление символа (black → lack)
- Вставка символа (sic → sick)
- Перемещение двух соседних символов (act → cat)
Чтобы найти похожие термины, fuzzy запрос создает набор всех возможных вариантов или расширений поискового термина в пределах указанного расстояния редактирования. Затем запрос возвращает точные совпадения для каждого раскрытия.
Примеры запросов
Простой запрос
GET /_search
{
"query": {
"fuzzy": {
"user.id": {
"value": "act"
}
}
}
}
Пример использования дополнительных параметров
GET /_search
{
"query": {
"fuzzy": {
"user.id": {
"value": "act",
"fuzziness": "AUTO",
"max_expansions": 50,
"prefix_length": 0,
"transpositions": true,
"rewrite": "constant_score"
}
}
}
}
Параметры верхнего уровня для fuzzy запросов
field
(Обязательный, объект) Поле для поиска.
Параметры для field
value
(Обязательный, строка) Термин, который вы хотите найти в указанном field.
fuzziness
(Необязательный, строка) Максимальное расстояние редактирования, разрешенное для сопоставления.
max_expansions
(Необязательный, целое число) Максимальное количество созданных вариантов. По умолчанию 50.
Избегайте использования высокого значения в параметре max_expansions, особенно если значение параметра prefix_length равно 0. Высокие значения в параметре max_expansions могут привести к снижению производительности из-за большого количества проверенных вариантов.
prefix_length
(Необязательный, целое число) Количество начальных символов, оставшихся без изменений при создании расширений. По умолчанию 0.
transpositions
(Необязательный, логическое значение) Указывает, включают ли изменения транспонирование двух соседних символов (ab → ba). По умолчанию true.
rewrite
(Необязательный, строка) Метод, используемый для перезаписи запроса.
Fuzzy запросы не будут выполняться, если для search.allow_expensive_queries установлено значение false.
Читайте также:
Комментарии
Отправить комментарий