Как научить поиск понимать запросы с ошибками
Найдется все, даже даже «xbgcs Lay’s»Исследование института Baymard говорит, что проблемы с распознаванием поисковых запросов есть примерно у каждого второго онлайн-магазина. Для пользователей это может стать барьером, который вызывает разочарование. В конечном итоге, глупый поиск влияет на показатели продаж.
Сначала разберемся, по какому принципу вообще поиск распознает запросы. Самый распространенный алгоритм — полнотекстовой поиск, его чаще всего используют для точных запросов (когда пользователь точно знает, что ищет и как это пишется).
Полнотекстовой поиск индексирует все слова и фразы, которые встречаются в приложении. Индекс содержит информацию о том, где встречаются эти слова и фразы, и определяет их вес или релевантность.
Когда пользователь пишет в поиске «чипсы Lay’s», поиск разбивает запрос на «чипсы» и «Lay’s», ищет эти слова по индексам и находит все документы, где они встречаются. Например, карточку товара «чипсы Lay’s сметана и зелень», новость «Попробуйте чипсы Lay’s со вкусом малосольных огурчиков» и статью «5 рецептов с чипсами Lays».
Система ранжирует документы и отображает пользователю самые релевантные. На первом месте будет карточка товара «чипсы Lay’s сметана и зелень»: в ней больше всего слов из запроса, и они находятся в заголовке и описании продукта.
Настроить полнотекстовой поиск можно разными способами. Мы чаще всего пользуемся Elasticsearch и Diginetica. Diginetica — это сервис для поиска в интернет-магазинах. Он сам обрабатывает все запросы. Elasticsearch настраиваем вручную.
Запрос с ошибкой или опечаткой — тоже вариант точного запроса. Пользователь вводит тип товара, его название или бренд, но неправильно. Например, «чипсы Lays», «чиспы Lay’s» или даже «xbgcs Lay’s». Baymard Institute говорит, что 42% онлайн-магазинов такие запросы не распознают.
Научить поиск понимать запросы с ошибками можно разными способами. Например, можно интегрировать в систему библиотеки или модули автоматического исправления. Или создать собственный словарь с самыми распространенными ошибками и опечатками. Или использовать фонетический поиск.
В Elasticsearch есть встроенная функция Elasticsearch Suggester. Она помогает распознавать запросы, даже когда если пользователи пишут их неправильно, предлагает варианты исправления и проверяет орфографию. Suggester просто настраивается и масштабируется вместе с Elasticsearch.
Но по функциональности эта функция не может сравниться с некоторыми другими библиотеками и модулями автоисправления. Например, Hunspell или Peter Norvig’s Spelling Corrector.
- Hunspell — это библиотека проверки орфографии с открытым исходным кодом. Ее можно добавить в Elasticsearch в качестве токенизатора. Кроме того, есть плагины Elasticsearch, которые тоже позволяют интегрировать Hunspell.
- Peter Norvig's Spelling Corrector — это алгоритм исправления ошибок, основанный на теории вероятности и расстоянии редактирования — количестве вставок, удалений или замен, необходимых, чтобы преобразовать одно слово в другое. Чтобы интегрировать Peter Norvig's Spelling Corrector с Elasticsearch, можно также использовать плагины.
Свой словарь частых ошибок и опечаток помогает улучшить распознавание запросов с ошибками, повысить точность поиска и улучшить пользовательский опыт. Создать такой словарь можно в Elasticsearch и добавлять к нему разные функции. Например, чтобы удалять дубликаты.
У фонетического поиска могут быть разные алгоритмы. Например, Soundex, Metaphone, Double Metaphone и NYSIIS. Все они преобразуют слова в коды, которые основаны на их звучании. Это помогает обрабатывать ошибочные запросы. Чтобы настроить фонетический поиск в Elasticsearch:
- Создайте индекс Elasticsearch и добавьте поле для фонетического представления слов.
- Используйте анализатор Elasticsearch «phonetic», чтобы преобразовать слова в фонетическое представление.
- Индексируйте данные с фонетическим представлением слов.
- Используйте фонетический поиск Elasticsearch, чтобы найти «чипсы Lay’s» по запросу «чипсы лейс».
Научить поиск распознавать ошибки — это творческая задача. Полнотекстовой поиск справится с прямыми запросами, автоисправление и библиотеки вроде Hunspell подхватят опечатки, а фонетические алгоритмы добавят гибкости. Есть и другие механизмы — они работают со сленгом, запросами по совместимости и характеристикам.