Синонимы, транслит и магия: Как заставить систему читать мысли пользователя

в 11:54, , рубрики: bitrix, elasticsearch, поисковые системы

Поиск сопровождает практически любую информационную систему — будь то интернет-магазин, таск-трекер, CRM или что-либо другое. Заветная иконка поиска присутствует почти везде.

Синонимы, транслит и магия: Как заставить систему читать мысли пользователя - 1

В зависимости от проекта к данной функции предъявляются разные требования. Например, в магазине автозапчастей поиск чаще всего осуществляется по артикулу — казалось бы, просто, но данных очень много. В интернет-магазинах требования к поиску максимально широкие.

Речь идет о транслите, учете ошибок в написании, синонимах и других тонкостях. Обычно все начинается с классического поиска в формате выборки по SQL или нечеткого поиска..

Эволюция

Штатный битрикс поиск умеет искать по названиям и описаниям. Дополнительно в него можно включить любое свойство, чтобы расширить возможности поиска. Это отличный вариант улучшения на старте. Достаточно загрузить каталог в 1С или на сайт и через запятую добавить ключи, по которым должен осуществляться поиск товаров. Функция транслита обычно присутствует, но почти всегда остается выключенной.

Далее можно рассмотреть варианты с дополнительными модулями — поиск работает лучше, но не стоит ожидать чудес.

Появляется Sphinx — довольно старая система, но ее преимущество перед стандартным решением в том, что мы сами индексируем нужные нам данные, плюс поиск становится условно быстрым.

Затем на сцену выходят мощные решения вроде Elasticsearch + Kibana — инструмент, который мы регулярно внедряем клиентам. Здесь можно самостоятельно настроить индексацию, синонимы, учет ошибок и аналитические дашборды, а также установить веса — просто идеально.

Мода

Для стартапов и небольших приложений подойдут Meilisearch и Typesense с их простотой использования и быстрой интеграцией. Проекты, связанные с искусственным интеллектом, оценят Weaviate и Milvus благодаря семантическому поиску. Для корпоративных решений рассмотрите Vespa или Opensearch. При необходимости встроить поиск в существующую инфраструктуру обратите внимание на RedisSearch или ZincSearch.

SaaS-сервисы: быстро, но с ограничениями

Отдельно стоит упомянуть SaaS-сервисы. Туда загружается XML или JSON с контентом для индексации, после чего возвращается готовая выдача. Практически это выглядит как установка фрейма или JS-строки поиска с последующим вызовом Vue-компонента с результатами.

Такой подход удобен, но имеет существенные ограничения: зависимость от стороннего сервиса, ежемесячные платежи и невозможность создать, например, SEO-страницу поиска. Это не самый профессиональный способ решения задачи, хотя иногда может быть оправдан срочностью.

Что важно учесть

1. Обработка ввода пользователя

  • Транслитерация: Поддержка ввода на русском и английском (например, «stul» и «стул»).

  • Опечатки: Распознавание и исправление ошибок (например, «стлу» → «стул»).

  • Синонимы: Учет различных формулировок (например, «диван» = «софа»).

  • Регистронезависимость: Поиск должен работать независимо от регистра (например, «СТУЛ» = «стул»).

  • Множественное число и склонения: Поддержка форм слов (например, «стула», «стулья»).

  • Префиксный поиск: Результаты при вводе части слова (например, «стул» → «стул», «стулья», «стульчик»).

2. Логика поиска

  • Релевантность: Ранжирование результатов по популярности, наличию и соответствию.

  • Поиск по полям: Разделение на основные (названия, категории) и дополнительные (описания, характеристики).

  • Фильтры и сортировка: Поддержка фильтров по цене, наличию, категориям и т. д.

  • Поиск по частям фраз: Например, «детский стул» → «стул детский», «детский стол и стул».

  • Сложные запросы: Поиск по нескольким параметрам одновременно (например, «стул деревянный дешевый»).

3. Обогащение функционала

  • Перевод слов: Если сайт многоязычный, поиск должен учитывать перевод (например, «chair» = «стул»).

  • Популярные запросы: Отображение популярных и трендовых запросов.

  • Подсказки (автокомплит): Предложение вариантов поиска во время ввода.

  • История запросов: Возможность повторить предыдущие поиски.

  • Семантический поиск: Понимание контекста, даже если запрос некорректен (например, «стол круглый белый»).

Как выбрать правильное решение поиска

Нередко к нам обращаются клиенты с жалобой, что поиск не работает. Это общее описание проблемы, поэтому необходимо получить конкретику, чтобы определить дальнейшие действия.

Для структуризации задачи мы высылаем клиентам опросный лист в формате таблицы, где просим описать проблемы по определенному шаблону: ключевые моменты, текущие результаты и желаемый.

По результатам заполнения таблицы становится понятно, стоит ли просто доработать штатный поиск или необходимо внедрять более тяжеловесное решение.

Вот пример таблицы, которую клиент сможет заполнить для анализа текущей работы поиска.

Таблица

В формате Google Таблицы: https://alexeyit.ru/all/sinonimy-translit-i-magiya#table

Запрос

Что выводится сейчас

Что должно выводиться (ожидаемый результат)

Ошибка, которая не обрабатывается

молоко

Ссылка на результаты поиска

Товары с «молоко», включая «молоко 1%», «кефир» и «йогурт». Все виды хлеба, включая «багет», «батон», «нарезка».

Не учитываются синонимы (например, «кефир», «йогурт»).

хлеб

Ссылка на результаты поиска

Все виды хлеба, включая «багет», «батон», «нарезка»

Нет обработки синонимов (например, «батон»).

mlk

Ссылка на результаты поиска

Результаты с «молоко» (транслитерация «mlk» → «молоко»).

Транслит не обрабатывается.

яблк

Ссылка на результаты поиска

Результаты для «яблоко» (исправление опечатки).

Опечатка не обрабатывается.

шокоадный

Ссылка на результаты поиска

Товары с «шоколад», «батончик», включая «сникерс», «твикс».

Поиск работает строго по фразе, не учитывает раздельный поиск слов.

молоко детское

Ссылка на результаты поиска

Товары с молоком, включая категорию «детское».

Нет фильтрации по категориям (например, «детское молоко»).

1л молока

Ссылка на результаты поиска

«Молоко 1 литр», «кефир 1 литр».

Нет обработки числовых значений.

яблоки зеленые

Ссылка на результаты поиска

Зеленые яблоки, включая категории «фрукты», «яблоки».

Не работает поиск по ключевым словам с уточнением цвета.

Инструкция для заполнения:

  1. Запрос: Впишите поисковый запрос, который пользователь может ввести.

  2. Что выводится сейчас: Скопируйте ссылку на текущие результаты поиска (или опишите, что выводится).

  3. Что должно выводиться: Опишите, как вы ожидаете, что результаты должны быть отображены.

  4. Ошибка, которая не обрабатывается: Укажите, какая ошибка присутствует в работе поиска (например, отсутствие фильтрации, неработающие синонимы, игнорирование опечаток и т. д.).

Этот формат поможет четко определить проблемные места и области для улучшения.

Заключение

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

Вспоминая пример с Wrike, где поиск осуществлялся по названиям, содержанию описаний проектов и задач, включая комментарии. А в Яндекс.Трекере, к примеру, общий поиск работает только по названиям задач — крайне неудобно.

Важно отметить, нужна какая то система аналитики с отслеживание самых популярных запросов и запросов на которых нет ответов. Это позволит постепенно улучшать поиск. 

Поиск в проектах с большим объемом информации — это настоящий помощник, позволяющий быстро находить давно утерянные данные. Не пренебрегайте этой, казалось бы, тривиальной функцией, улучшайте ее. Пользователи будут благодарны, что конечном итоге улучшит ваши метрике и бизнес будет благодарен.

Автор: AlexEp

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js