Настройка Sphinx в CMS Bitrix

Sphinx (англ. SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксеновым и распространяемая по лицензии GNU GPL. Отличительной особенностью этого поискового движка является высокая скорость индексации и поиска, возможность использовать морфологический и полнотекстовый поиск.

SphinxSE уже обрел популярность среди разработчиков: именно с его помощью осуществляется поиск на популярном Хабрахабре, проекте Викимапия, сайтах популярного книжного интернет-магазина Буквоед и "Санкт-Петербургского Дома Книги", BitTorrent-трекере The Pirate Bay (небезызвестная "Пиратская бухта") и других высоконагруженных проектах.

Полнотекстовый поиск Sphinx доступен в продуктах «1С-Битрикс» с версии 14.0.0. Он позволяет сделать быстрым и качественным поиск на вашем сайте, снизить нагрузку на сервер, а также он полностью интегрирован с компонентами модуля Поиск.

Внимание! Начиная с версии Sphinx 2.2.1 опция charset_type объявлена как устаревшая:

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 в bitrix Затем перейти во вкладку "Морфология" и в выпадающем списке меню "Полнотекстовый поиск с помощью" выбрать "Sphinx". настройка поиска sphinx в bitrix Для своей работы 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/. Выбираем необходимый тариф и включаем демон полнотекстового поиска:

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

включение sphinx в панели управления cp.beget.com
Переходим на вкладку "Поисковый сервер" и включаем его.

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

После применения измений появится сообщение о необходимости полностью проиндексировать сайт, нажимаем на "Переиндексировать сайт"

включение sphinx на хостинге beget.com
Попав на страницу индексации снимаем галочку "Проиндексировать только измененные" и нажимаем "Переиндексировать"

включение sphinx на хостинге beget.com
Настройка полнотекстового закончена! Проверить работу поиска можно на Вашем сайте.

Если при установке или настройке возникли проблемы, Вы можете обратиться в нашу техническую поддержку - мы с радостью поможем и ответим на все Ваши вопросы.