Нечеткий поиск: умный поиск с учетом синонимов и обработкой ошибок пользователей
Решение расширяет базовый функционал стандартного модуля «Поиск» от Битрикс, позволяя эффективно обрабатывать синонимичные значения, опечатки и ошибки в поисковым запросе. Высокая эффективность модуля обеспечивается комбинированной работой различных алгоритмов поиска по сходству (fuzzy string search) и компьютерной лингвистики.Модуль включает в себя следующие функциональные блокиРасширение выборки. Из исходного запроса строится множество «ошибочных» слов, для каждого из которых затем производится точный поиск в словаре.Поиск по сходству.Поиск по словарю синонимов.Обработка поисковых запросов пользователей. Анализируется поисковая статистика, обрабатываются те запросы, для которых не нашлось ни одного совпадения.Установка и настройка модуля проста и не требует специальных знаний. Одновременно с этим, модуль предоставляет систему настроек, рассчитанную на самых взыскательных пользователей. Все настройки модуля подробно объяснены и задокументированы.В комплекте с модулем поставляются компоненты catalog.search, search.title и search.page, которые, работая в «нечетком» режиме, повторяют функционал и шаблоны одноименных стандартных компонентов.Преимущества модуляКомбинация различных алгоритмов нечеткого поискаАнализ статистики поисковых запросовСовместимость со SphinxГибкая система настроекВозможность ограничения зоны действия модуляСовместимость как с UTF-8, так и с Windows-1251Словарь 80 000+ синонимовПодробная документацияУстановка и настройка модуляУстановите решениеВыберите опции модуля на вкладке Настройки продукта > Настройки модулей > Нечеткий поискЗапустите переиндексациюЕсли используется режим поиска по сходству, замените компоненты bitrix:catalog.search, bitrix:search.title и bitrix:search.page на одноименные компоненты модуляТребования к ПОPhp >= 5.6.0Mysql >= 5.6В требованиях указана протестированная конфигурация. Если хостинг не удовлетворяет указанным требованиям, то напишите в нашу техническую поддержку, мы проверим совместимость модуля конкретно с Вашим ПО.Расширение поисковой выборкиИсходный поисковый индекс Bitrix искусственно расширяется: строится множество «ошибочных» слов, а также слов-синонимов (опционально). Таким образом, если пользователь введет поисковый запрос с ошибкой, который ранее попал в расширенный индекс, ему будет автоматически возвращена релевантная выдача. Данный режим не требует изменений стандартных компонентов.Ниже рассмотрен пример работы модуля с индексируемым словом «платье».Поиск по сходствуПри ошибочном поисковом запросе проиндексированные данные последовательно сравниваются с запрашиваемой строкой, ищутся максимально похожие на основании расстояния Левенштейна. Доступно сравнение на основании стемминга (морфологический основ) и metaphone (фонетического звучания).Для работы в режиме поиска по сходству, модуль использует как стандартный индекс Bitrix, так и собственные таблицы индексации.Данный режим требует замены стандартных компонентов bitrix:catalog.search, bitrix:search.title и bitrix:search.page на одноименные компоненты модуля.Обработка поисковых запросов пользователейПри включенной опции «Собирать статистику по поисковым фразам» модуля «Поиск» будет производиться автоматический сбор информации по поисковым запросам пользователей. Ознакомиться с собранной статистикой можно на вкладке Настройки > Поиск > Статистика > Список фраз. Модуль «Нечеткий поиск» расширяет данный функционал, выбирая из статистики те запросы, для которых не нашлось ни одного совпадения. Фразы запросов разбиваются на отдельные слова, для слов находятся морфологические основы. При индексации данных на сайте выделенные морфологические основы будут сравниваться с основами индексируемых слов, близкие основы будут добавлены в индекс.Пример работыПользователь ввел поисковый запрос с опечаткой «фцтболка». Для данного запроса на сайте не было найдено совпадений, запрос попал специальную таблицу модуля «Нечеткий поиск». На сайте есть проиндексированное слово «футболка». Поскольку основа слова «футболка» близка к основе слова «фцтболка», происходит расширение поискового индекса. Теперь при запросе «фцтболка» пользователю будет возвращены данные, соответствующие поисковому индексу для «футболка».ОсобенностиФункционал включается/отключается опцией «Добавлять к индексу поисковые фразы» модуля «Нечеткий поиск» на вкладке Общие настройки.Функционал будет работать только при включенной опции «Собирать статистику по поисковым фразам» модуля «Поиск».Функционал работает как в режиме I «Расширение выборки», так и в режиме II «Поиск по сходству».Описанное выше сравнение морфологических основ подчиняется общим правилам сравнения, задаваемым в настройках модуля «Нечеткий поиск» на вкладке Общие настройки.Ознакомиться с обработанными поисковыми фразами мы можете на вкладке Настройки > Нечеткий поиск > Обработанные поисковые фразы.У пользователя есть возможность деактивировать часть обработанных фраз на вкладке Настройки > Нечеткий поиск > Обработанные поисковые фразы. Деактивированные данные не будут учитываться при индексации.Словарь синонимовМодуль «Нечеткий поиск» предоставляет удобный функционал для поиска по синонимам. Синонимы добавляются к поисковому индексу в случае, если морфологическая основа какого-либо слова из индекса совпадает с основой слова из таблицы синонимов.Вместе с модулем поставляется обширный словарь синонимов, который пользователь может добавлять самостоятельно. Список синонимов смотрите в разделе Настройки > Нечеткий поиск > Словарь синонимов.Пример работыДопустим, что в поисковый индекс попало слово «футболки», при этом в словаре активна запись для слова «футболка» с синонимами «рубашка, майка». Морфологические основы слов «футболки» и «футболка» совпали, поэтому слова «рубашка» и «майка» расширят поисковую выдачу для «футболки».ОсобенностиФункционал синонимов включается и отключается опцией «Добавлять к индексу синонимы» в настройках модуля «Нечеткий поиск» на вкладке Общие настройки.У каждой записи словаря синонимов есть флаг активности. Деактивированные синонимы не будут участвовать в поиске.Пользователь может настроить использование только своих собственных синонимов, исключив словарь, поставляемый вместе с модулем. Для этого необходимо включить опцию «Использовать словарь синонимов пользователя» и отключить «Использовать словарь синонимов по умолчанию» в настройках модуля «Нечеткий поиск» на вкладке Общие настройки. Обратным действием можно исключить словарь собственных синонимов.Часто задаваемые вопросыОбрабатывает ли модуль ошибки раскладки клавиатуры?Да, обрабатывает. Данный функционал есть в стандартных компонентах bitrix (параметр «Включить автоопределение раскладки клавиатуры»), и он сохранен в компонентах модуля. Это позволяет, например, обработать ситуацию, когда пользователь ввел в строку поиска «gkfnmt» вместо «платье». Кроме того, в настройках модуля доступен режим сравнения по фонетическому сходству, что позволяет корректно обработать созвучные запросы разных языков, например «platie» вместо «платье».
Нечеткий поиск: умный поиск с учетом синонимов и обработкой ошибок пользователей
Решение расширяет базовый функционал стандартного модуля «Поиск» от Битрикс, позволяя эффективно обрабатывать синонимичные значения, опечатки и ошибки в поисковым запросе. Высокая эффективность модуля обеспечивается комбинированной работой различных алгоритмов поиска по сходству (fuzzy string search) и компьютерной лингвистики.
Модуль включает в себя следующие функциональные блоки
Расширение выборки. Из исходного запроса строится множество «ошибочных» слов, для каждого из которых затем производится точный поиск в словаре.
Поиск по сходству.
Поиск по словарю синонимов.
Обработка поисковых запросов пользователей. Анализируется поисковая статистика, обрабатываются те запросы, для которых не нашлось ни одного совпадения.
Установка и настройка модуля проста и не требует специальных знаний. Одновременно с этим, модуль предоставляет систему настроек, рассчитанную на самых взыскательных пользователей. Все настройки модуля подробно объяснены и задокументированы.
В комплекте с модулем поставляются компоненты catalog.search, search.title и search.page, которые, работая в «нечетком» режиме, повторяют функционал и шаблоны одноименных стандартных компонентов.
Если используется режим поиска по сходству, замените компоненты bitrix:catalog.search, bitrix:search.title и bitrix:search.page на одноименные компоненты модуля
Требования к ПО
Php >= 5.6.0
Mysql >= 5.6
В требованиях указана протестированная конфигурация.
Если хостинг не удовлетворяет указанным требованиям, то напишите в нашу техническую поддержку, мы проверим совместимость модуля конкретно с Вашим ПО.
Расширение поисковой выборки
Исходный поисковый индекс Bitrix искусственно расширяется: строится множество «ошибочных» слов, а также слов-синонимов (опционально). Таким образом, если пользователь введет поисковый запрос с ошибкой, который ранее попал в расширенный индекс, ему будет автоматически возвращена релевантная выдача. Данный режим не требует изменений стандартных компонентов.
Ниже рассмотрен пример работы модуля с индексируемым словом «платье».
Поиск по сходству
При ошибочном поисковом запросе проиндексированные данные последовательно сравниваются с запрашиваемой строкой, ищутся максимально похожие на основании расстояния Левенштейна.
Доступно сравнение на основании стемминга (морфологический основ) и metaphone (фонетического звучания).
Для работы в режиме поиска по сходству, модуль использует как стандартный индекс Bitrix, так и собственные таблицы индексации.
Данный режим требует замены стандартных компонентов bitrix:catalog.search, bitrix:search.title и bitrix:search.page на одноименные компоненты модуля.
Обработка поисковых запросов пользователей
При включенной опции «Собирать статистику по поисковым фразам» модуля «Поиск» будет производиться автоматический сбор информации по поисковым запросам пользователей. Ознакомиться с собранной статистикой можно на вкладке Настройки > Поиск > Статистика > Список фраз. Модуль «Нечеткий поиск» расширяет данный функционал, выбирая из статистики те запросы, для которых не нашлось ни одного совпадения. Фразы запросов разбиваются на отдельные слова, для слов находятся морфологические основы. При индексации данных на сайте выделенные морфологические основы будут сравниваться с основами индексируемых слов, близкие основы будут добавлены в индекс.
Пример работы
Пользователь ввел поисковый запрос с опечаткой «фцтболка». Для данного запроса на сайте не было найдено совпадений, запрос попал специальную таблицу модуля «Нечеткий поиск». На сайте есть проиндексированное слово «футболка». Поскольку основа слова «футболка» близка к основе слова «фцтболка», происходит расширение поискового индекса.
Теперь при запросе «фцтболка» пользователю будет возвращены данные, соответствующие поисковому индексу для «футболка».
Особенности
Функционал включается/отключается опцией «Добавлять к индексу поисковые фразы» модуля «Нечеткий поиск» на вкладке Общие настройки.
Функционал будет работать только при включенной опции «Собирать статистику по поисковым фразам» модуля «Поиск».
Функционал работает как в режиме I «Расширение выборки», так и в режиме II «Поиск по сходству».
Описанное выше сравнение морфологических основ подчиняется общим правилам сравнения, задаваемым в настройках модуля «Нечеткий поиск» на вкладке Общие настройки.
Ознакомиться с обработанными поисковыми фразами мы можете на вкладке Настройки > Нечеткий поиск > Обработанные поисковые фразы.
У пользователя есть возможность деактивировать часть обработанных фраз на вкладке Настройки > Нечеткий поиск > Обработанные поисковые фразы. Деактивированные данные не будут учитываться при индексации.
Словарь синонимов
Модуль «Нечеткий поиск» предоставляет удобный функционал для поиска по синонимам. Синонимы добавляются к поисковому индексу в случае, если морфологическая основа какого-либо слова из индекса совпадает с основой слова из таблицы синонимов.
Вместе с модулем поставляется обширный словарь синонимов, который пользователь может добавлять самостоятельно. Список синонимов смотрите в разделе Настройки > Нечеткий поиск > Словарь синонимов.
Пример работы
Допустим, что в поисковый индекс попало слово «футболки», при этом в словаре активна запись для слова «футболка» с синонимами «рубашка, майка».
Морфологические основы слов «футболки» и «футболка» совпали, поэтому слова «рубашка» и «майка» расширят поисковую выдачу для «футболки».
Особенности
Функционал синонимов включается и отключается опцией «Добавлять к индексу синонимы» в настройках модуля «Нечеткий поиск» на вкладке Общие настройки.
У каждой записи словаря синонимов есть флаг активности. Деактивированные синонимы не будут участвовать в поиске.
Пользователь может настроить использование только своих собственных синонимов, исключив словарь, поставляемый вместе с модулем. Для этого необходимо включить опцию «Использовать словарь синонимов пользователя» и отключить «Использовать словарь синонимов по умолчанию» в настройках модуля «Нечеткий поиск» на вкладке Общие настройки. Обратным действием можно исключить словарь собственных синонимов.
Часто задаваемые вопросы
Обрабатывает ли модуль ошибки раскладки клавиатуры?
Да, обрабатывает.
Данный функционал есть в стандартных компонентах bitrix (параметр «Включить автоопределение раскладки клавиатуры»), и он сохранен в компонентах модуля.
Это позволяет, например, обработать ситуацию, когда пользователь ввел в строку поиска «gkfnmt» вместо «платье».
Кроме того, в настройках модуля доступен режим сравнения по фонетическому сходству, что позволяет корректно обработать созвучные запросы разных языков, например «platie» вместо «платье».
Отзывы (5)
Обсуждения (17)
Обсуждения (17
)
Авторизуйтесь , чтобы оставить отзыв или задать вопрос разработчику.
Пользователь 6714634 29 апреля 2025 17:22
Добрый день! Тестируем в демо-периоде
Столкнулись с проблемой: отсутствуют результаты выдачи по запросам менее 4х символов, например zic, лук
Прописаны соответствующие синонимы: зик - zic; Лук - лукойл, лукоил, lukoil
Ирина Трушина (разработчик) 30 апреля 2025 14:58
добрый день!
Для ответа на ваш вопрос, нам необходимы доступы к сайту, на котором установлен модуль в демо-режиме.
Это ftp и административный доступ к системе управления сайтом.
Просьба предоставить их сегодня на электронную почту web@tega.ru, чтобы мы успели провести диагностику до завершения демо-периода.
Спасибо за выбор модуля "Нечеткий поиск"!
Пользователь 256109 2 апреля 2025 12:53
Добрый день. Установлена последняя версия, при поиске возникает ошибка:
2025-04-02 12:49:20 - Host: ... - UNCAUGHT_EXCEPTION - [Error]
Undefined constant "Tega\BX_SEARCH_VERSION" (0)
.../bitrix/modules/tega.fuzzysearch/classes/general/CFSearch.php:79
#0: Tega\CFSearch->Search
.../bitrix/components/tega.fuzzysearch/search.page/component.php:344
#1: include(string)
.../bitrix/modules/main/classes/general/component.php:615
#2: CBitrixComponent->__includeComponent
.../bitrix/modules/main/classes/general/component.php:692
#3: CBitrixComponent->includeComponent
.../bitrix/modules/main/classes/general/main.php:1188
#4: CAllMain->IncludeComponent
.../search/index.php:26
----------
Ожидается ли исправление?
Владимир Дуденков (разработчик) 3 апреля 2025 11:07
добрый день! Мы обязательно это проверим и исправим, если ошибку удастся воспроизвести. Вы также можете прислать доступы на почту web@tega.ru, мы бесплатно исправим ошибку конкретно на Вашем сайте.
Пользователь 8852782 17 марта 2025 08:12
Добрый день. Смотрю пробную версию на сайте. Не совсем понятно, как работает поиск по синонимам. Подскажите, пожалуйста, какие настройки влияют на такой поиск. В словаре синонимов для слова "плинтус" есть синоним "планка", и наоборот. Так вот при поиске на слово "плинтус" выдает результат, т.е. есть такой товар у которого имеется слово "плинтус" и в названии и в описании. А вот на слово "планка" не выдает ничего. В настройках нечеткого поиска выставлено использование исключительно словаря синонимов по умолчанию. Все проиндексировано.
Владимир Дуденков (разработчик) 17 марта 2025 15:11
добрый день!
В случае использования режима "Режим I. Расширение выборки", убедитесь, что настройка "Максимальное количество измененного индекса для документа" установлена равной 0. Также попробуйте изменить настройку "Принцип поиска синонимов в словаре". Если указанные действия не помогут, пришлите доступы к Вашему сайту на почту web@tega.ru для бесплатной диагностики проблемы.
Пользователь 353174 6 декабря 2024 12:17
добрый день можно рассчитывать на помощь в настройке если лицензия закончилась?
Ирина Трушина (разработчик) 6 декабря 2024 16:32
добрый день!
Поддержка работы модуля осуществляется в период активности лицензии.
Однако, Вы можете написать нам запрос на адрес web@tega.ru. Возможно, получится Вам помочь в индивидуальном порядке.
Спасибо за выбор модуля "Нечеткий поиск"!
Пользователь 7951256 31 октября 2024 11:57
Здравствуйте, а статистика поисковых фраз как нибудь хранится чтобы ее из админки битрикс посмотреть?
Ирина Трушина (разработчик) 31 октября 2024 17:57
добрый день!
Статистику поисковых фраз можно посмотреть в Настройки > Поиск > Статистика > Список фраз.
Отметим, что для просмотра данной статистики наш модуль не требуется, достаточно стандартного модуля "Поиск" от Bitrix.
В связи с высокой гибкостью решения, наши специалисты готовы бесплатно оказать помощь в настройке модуля для решения Ваших задач, в том числе, во время действия тестового периода. Время бесплатных консультаций и настроек ограничено и не превышает 2-х часов для одного проекта.
Поддержка
Бесплатная техническая поддержка предоставляется клиентам с активной лицензией, а также всем обратившимся во время демо-периода. Телефон/факс: (473) 239-03-04 /многоканальный/ E-mail:web@tega.ru Время работы: пн-пт: 9:00 - 18:00; сб-вс: выходной Время ответа: 24 рабочих часа