Поиск с учетом опечаток
Допускайте опечатки в текстовом поиске по заданной модели, сохраняя строгие идентификаторы, фильтры и права доступа.
Плохо
Fuzzy применяется к SKU, цене и tenant. Запрос «AB-100» возвращает и автоматически выбирает «AB-101».
Хорошо
Название: exact/prefix и ограниченный fuzzy по политике ранжирования.
SKU/ID: точное совпадение по умолчанию.
Цена, дата, tenant: типизированные строгие фильтры.
Неточное совпадение отмечено; пользователь выбирает результат явно.
Почему это важно
Fuzzy matching расширяет текстовый поиск по расстоянию редактирования. Он не определяет бизнес-эквивалентность идентификаторов и не заменяет морфологию или транслитерацию.
Когда применять
Для названий, имен и описаний, где опечатки ожидаемы. Для коротких строк, кодов, финансовых и иных точных значений применяется отдельная политика.
Требования
- Задайте нормализацию, анализатор, минимальную длину, допустимое расстояние/транспозиции, prefix_length и max_expansions либо эквивалентные ограничения движка. Значения проверяются на корпусе запросов.
- Сохраните точный путь поиска и ожидаемый приоритет exact/prefix на контрольных данных. Не обещайте такой порядок только наличием boost без проверки фактической выдачи.
- Не размывайте tenant, авторизацию, диапазоны, даты, валюты и точные ID. Для bool с filter и should задайте minimum_should_match, если хотя бы одно текстовое условие обязательно.
- Ограничьте время, объем и стоимость расширения. При отказе применяйте описанный fallback без удаления точных условий; не выполняйте действие по приблизительному результату автоматически.
Кто что делает
Человек
Утверждает набор запросов и ожидаемых результатов, точные поля и допустимую цену ошибок поиска.
AI-агент
Настраивает текстовый поиск и точные фильтры отдельно; проверяет опечатки, права, ранжирование, короткие запросы и бюджет выполнения.
Как проверить у себя
- Проверьте опечатку, перестановку букв, короткую строку, точный SKU, отсутствие совпадений и несколько близких названий.
- Проверьте приоритет точного совпадения, ограничения нагрузки и невозможность обхода фильтров или доступа.
Первоисточники
История изменений на GitHubДата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.