Что такое Sphinx?
Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксеновым и распространяемая по лицензии GNU GPL. Отличительной особенностью этого поискового движка является высокая скорость индексации и поиска, возможность использовать морфологический и полнотекстовый поиск.
SphinxSE уже обрел популярность среди разработчиков: именно с его помощью осуществляется поиск на популярном Хабрахабре, проекте Викимапия, сайтах популярного книжного интернет-магазина Буквоед и "Санкт-Петербургского Дома Книги", BitTorrent-трекере The Pirate Bay (небезызвестная "Пиратская бухта") и других высоконагруженных проектах.
Полнотекстовый поиск Sphinx доступен в продуктах «1С-Битрикс» с версии 14.0.0. Он позволяет сделать быстрым и качественным поиск на вашем сайте, снизить нагрузку на сервер, а также он полностью интегрирован с компонентами модуля Поиск.
In 2.2.1-beta version we decided to start removing some old features. All of them was 'unofficially' deprecated for some time. And we're informing you now about it. charset_type=sbcs is now deprecated, we're slowly switching to UTF-only. Even if your database is SBCS (likely for legacy reasons too, eh?), this should be absolutely trivial to workaround, just add a pre-query to fetch your data in UTF-8 and you're all set. Also, in fact, our current UTF-8 tokenizer is even faster than the SBCS one.
Несмотря на то, что в документации к модулю "Поиск" начиная с версии v16.5.0 заявляется о поддержке Sphinx 2.2.10 - она работает исключительно для сайтов в кодировке UTF-8.
Настройка Sphinx
Мы разработали видеоинструкцию, где в удобном формате объяснили как осуществляется настройка полнотекстового поиска в Sphinx в 1С-Bitrix.
Для настройки необходимо зайти в административную панель сайта, затем перейти в меню "Настройки" -> "Настройки продукта" -> "Настройки модулей" -> "Поиск".

Затем перейти во вкладку "Морфология" и в выпадающем списке меню "Полнотекстовый поиск с помощью" выбрать "Sphinx".

Для своей работы Bitrix использует RT индексы, то есть, фактически, запись осуществляется в два места одновременно - в базу данных и сервер полнотекстового поиска Sphinx, при этом сам Indexer (программа индексации из набора Sphinx) не обновляет индексы. Этот подход позволяет всегда осуществлять поиск по актуальной информации.
Далее необходимо скопировать конфигурационный файл, представленный на странице настройки:
#sphinx.conf
index bitrix
{
#main settings
type = rt
path = /var/lib/sphinxsearch/data/bitrix
docinfo = inline
#choose appropriate type of morphology to use
#morphology = lemmatize_ru_all, lemmatize_en_all, lemmatize_de_all, stem_enru
morphology = stem_enru, soundex
#these settings are used by bitrix:search.title component
dict = keywords
prefix_fields = title
infix_fields=
min_prefix_len = 2
enable_star = 1
#all fields must be defined exactly as followed
rt_field = title
rt_field = body
rt_attr_uint = module_id
rt_attr_string = module
rt_attr_uint = item_id
rt_attr_string = item
rt_attr_uint = param1_id
rt_attr_string = param1
rt_attr_uint = param2_id
rt_attr_string = param2
rt_attr_timestamp = date_change
rt_attr_timestamp = date_to
rt_attr_timestamp = date_from
rt_attr_uint = custom_rank
rt_attr_multi = tags
rt_attr_multi = right
rt_attr_multi = site
rt_attr_multi = param
#depends on settings of your site
# uncomment for single byte character set
charset_type = sbcs
# uncomment for UTF character set
#charset_type = utf-8
}
удалив из него строку "infix_fields=". Затем нажать "Применить" сохранив настройки.
На этом первая часть настройки CMS Bitrix для работы с сервером полнотекстового поиска закончена, далее необходимо настроить сам сервер.
Настройка параметров Sphinx происходит в панели управления хостингом - для этого нужно зайти в раздел "Сервисы" -> "Sphinx" или перейти по ссылке https://cp.beget.com/cloudservices/sphinx/. Выбираем необходимый тариф и включаем демон полнотекстового поиска:

Далее переходим на вкладку "Индексация" -> "Редактор конфигурации", вставляем скопированное ранее содержимое конфигурационного файла (с удалением строки "infix_fields="), и нажимаем "Сохранить":

Переходим на вкладку "Поисковый сервер" и включаем его.

Так как используются индексы реального времени, необходимо полностью проиндексировать сайт, для этого снова переходим во вкладку "Морфология" панели управления сайтом, в выпадающем списке меню "Полнотекстовый поиск с помощью" выбираем "Sphinx" и нажимаем "Применить".
После применения изменений появится сообщение о необходимости полностью проиндексировать сайт, нажимаем на "Переиндексировать сайт":

Попав на страницу индексации снимаем галочку "Проиндексировать только измененные" и нажимаем "Переиндексировать":

Настройка полнотекстового поиска закончена! Проверить работу поиска можно на Вашем сайте.
Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.