Настройка Sphinx в 1С-Bitrix

Что такое Sphinx?

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

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

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

Несмотря на то, что в документации к модулю "Поиск" начиная с версии v16.5.0 заявляется о поддержке Sphinx 2.2.10 - она работает исключительно для сайтов в кодировке UTF-8.

Настройка Sphinx

Для настройки необходимо зайти в административную панель сайта, затем перейти в меню "Настройки" -> "Настройки продукта" -> "Настройки модулей" -> "Поиск".

настройка поиска 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=. Сохранение изменений на данном этапе не требуется. 

Далее необходимо настроить параметры Sphinx. Сделать это необходимо в панели управления хостингом. 

Зайдите в раздел "Сервисы" -> "Sphinx". Выбираем необходимый тариф и включаем демон полнотекстового поиска:

включение sphinx в панели управления cp.beget.com

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

включение sphinx в панели управления cp.beget.com

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

включение sphinx на хостинге beget.com

После включения поискового сервера можно активировать опцию автоматического запуска. Для этого установите галочку «Запускать автоматически после перезагрузки» – в таком случае поисковый сервер будет запускаться автоматически после перезагрузки Sphinx

Для завершения настройки необходимо вернуться в административную панель сайта во вкладку "Морфология" и нажать “Сохранить”

включение sphinx на хостинге beget.com

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

включение sphinx на хостинге beget.com

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

включение sphinx на хостинге beget.com

Настройка полнотекстового поиска завершена! Проверить работу поиска можно на вашем сайте, а также в панели управления хостингом в разделе «Сервисы» -> «Sphinx» -> «Поисковый сервер», выполнив команду show index bitrix status.

включение sphinx на хостинге beget.com

Пример вывода:

Variable_name		Value
index_type			rt
indexed_documents		49
indexed_bytes		61317
ram_bytes			139645
disk_bytes			747
ram_chunk			133973
disk_chunks			0
mem_limit			134217728

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

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

Теги: