Sphinx cms: Настройка Sphinx в CMS Bitrix – Beget

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

Что такое Sphinx?

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

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

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

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

Настройка Sphinx

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

Затем перейти во вкладку «Морфология» и в выпадающем списке меню «Полнотекстовый поиск с помощью» выбрать «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» и нажимаем «Применить».

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

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

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

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

Установка и настройка Sphinx / Вопросы / LiveStreet CMS

Привет, наверное уже в 100 раз будет задан этот вопрос, но, к сожалению, поиском не смогу найти решение проблемы.

Хочется настроить нормальный поиск, но никак не выходит каменный цветочек нормальный поиск.


Что уже сделано:

  • Установлен сам Sphinx из FreeBSDшных портов по инструкции
  • Настроен Sphinx. conf тоже по готовой инструкции


Индексы на сколько я понял построены нормально:


<strong>indexer --all --rotate</strong>
Sphinx 2.0.4-release (r3135)
Copyright © 2001-2012, Andrew Aksyonoff
Copyright © 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/usr/local/etc/sphinx.conf'...
indexing index 'topicsIndex'...
collected 308 docs, 8.0 MB
collected 1126 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.6 Mhits, 100.0% done
total 308 docs, 7958382 bytes
total 1.463 sec, 5437550 bytes/sec, 210.44 docs/sec
indexing index 'commentsIndex'...
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.001 sec, 0 bytes/sec, 0.00 docs/sec
total 1747 reads, 0.004 sec, 0.9 kb/call avg, 0.0 msec/call avg
total 17 writes, 0.010 sec, 212.0 kb/call avg, 0.5 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=3353). 


Стартует вроде нормально:


<strong>/usr/local/etc/rc.d/sphinxsearch start</strong>
Starting sphinxsearch.
Sphinx 2.0.4-release (r3135)
Copyright © 2001-2012, Andrew Aksyonoff
Copyright © 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/usr/local/etc/sphinx.conf'...
WARNING: compat_sphinxql_magics=1 is deprecated; please update your application and config
listening on all interfaces, port=3312
WARNING: process shared mutex unsupported, MVA update disabled ( pthread_mutexattr_setpshared, errno = 22 )
precaching index 'topicsIndex'
precaching index 'commentsIndex'                            
precached 2 indexes in 0.002 sec 

По сути /usr/local/etc/rc.d/sphinxsearch start — это ни что иное как: /usr/local/sbin/searchd —config /usr/local/etc/sphinx.conf

И вот после этого начинается самое интересное — не работает:


/usr/local/bin/search project
Sphinx 2. 0.4-release (r3135)
Copyright © 2001-2012, Andrew Aksyonoff
Copyright © 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/usr/local/etc/sphinx.conf'...
index 'topicsIndex': query 'project ': returned 0 matches of 0 total in 0.000 sec

words:
1. 'project': 0 documents, 0 hits

index 'commentsIndex': query 'project ': returned 0 matches of 0 total in 0.000 sec

words:
1. 'project': 0 documents, 0 hits

При попытнке остановить пишет, что либо не может найти pid файл, хотя он реально есть:

schedulers# /usr/local/etc/rc.d/sphinxsearch stop
sphinxsearch not running? (check /var/run/sphinxsearch/searchd.pid).

В общем тупик, если кто подскажет куда копать — буду очень признателен!

Добро пожаловать — Документация Sphinx

Sphinx позволяет легко создавать интеллектуальную и красивую документацию.

Вот некоторые из основных особенностей Sphinx:

  • Выходные форматы: HTML (включая HTML-справку Windows), LaTeX (для печати
    PDF-версии), ePub, Texinfo, справочные страницы, обычный текст

  • Обширные перекрестные ссылки: семантическая разметка и автоматические ссылки для
    функции, классы, цитаты, термины глоссария и подобные части
    информация

  • Иерархическая структура: простое определение дерева документов с автоматическим
    ссылки на братьев и сестер, родителей и детей

  • Автоматические указатели: общий указатель, а также языковой модуль
    индексы

  • Обработка кода: автоматическое выделение с помощью маркера Pygments

  • Расширения: автоматическое тестирование фрагментов кода, включение строк документации
    из модулей Python (документы API) через встроенные расширения и гораздо больше функций через сторонние
    расширения.

  • Темы: измените внешний вид выходных данных с помощью создания тем и повторно используйте многие сторонние темы.

  • Добавленные расширения: десятков расширений, добавленных пользователями; большинство из них можно установить из PyPI.

Sphinx по умолчанию использует язык разметки reStructuredText и может читать
Уценка MyST через сторонние расширения. Оба из них
являются мощными и простыми в использовании и имеют функциональные
для сложной документации и публикации рабочих процессов. Оба они строятся на
Docutils для разбора и записи документов.

Ниже описано, как перемещаться по документации Sphinx.

См. также

Содержание документации Sphinx
полный список страниц этого сайта.

Начать

В этих разделах рассказывается об основах работы со Sphinx, включая
создание и создание собственной документации с нуля.

Начало работы

  • Начало работы
    • Настройка источников документации
    • Определение структуры документа
    • Добавление содержимого
    • Запуск сборки
    • Документирование объектов
    • Базовая конфигурация
    • Автодок
    • Интерсфинкс
    • Дополнительные темы для обсуждения
  • Установка Sphinx
    • Обзор
    • Линукс
    • macOS
    • Windows
    • Установка из PyPI
    • Докер
    • Установка из источника
  • Учебник: Создайте свой первый проект
    • Начало работы
    • Первые шаги по документированию вашего проекта с помощью Sphinx
    • Дополнительные настройки Сфинкса
    • Сюжетная документация в Sphinx
    • Описание кода в Sphinx
    • Автоматическое формирование документации из кода
    • Приложение: развертывание проекта Sphinx в сети
    • Куда идти дальше

Руководства пользователя

Эти разделы охватывают различные темы использования и расширения Sphinx для различных
случаи использования. Они представляют собой всеобъемлющее руководство по использованию Sphinx во многих контекстах и
предполагают больше знаний о Sphinx. Если вы новичок в Sphinx, мы рекомендуем
начиная с Начать.

Руководства пользователя

  • Использование Sphinx
    • reStructuredText
    • Уценка
    • Конфигурация
    • Строители
    • Расширения
    • HTML-темы
    • Интернационализация
    • Интеграция средств настройки
    • Веб-поддержка Sphinx
  • Расширение Sphinx
    • Обзор разработки расширений
    • Учебники по расширению
    • Настройка сборщиков
    • Разработка темы HTML
  • Шаблоны
    • Нужно ли мне использовать шаблоны Sphinx для создания HTML?
    • Грунтовка для шаблонов Jinja/Sphinx
    • Работа со встроенными шаблонами
  • Настройка LaTeX
    • Параметр конфигурации latex_elements
    • Параметр конфигурации sphinxsetup
    • Дополнительные CSS-подобные 'sphinxsetup' ключи
    • Макросы и среды LaTeX
  • Разработка расширений для Sphinx
    • Важные объекты
    • Фазы сборки
    • Метаданные расширения
    • API, используемые для написания расширений

Справочник

Справочная документация носит более полный и программный характер, это
сбор информации, на которую можно быстро ссылаться. Если вы хотели бы
документацию по прецедентам см. в разделе «Начало работы» или в руководствах пользователя.

Артикул

  • Средства командной строки
    • Основные приложения
    • Дополнительные приложения
  • Глоссарий
  • Список изменений
  • Проекты с использованием Sphinx
    • Документация с использованием алебастровой темы
    • Документация с использованием классической темы
    • Документация с использованием темы sphinxdoc
    • Документация с использованием темы природы
    • Документация с использованием другой встроенной темы
    • Документация с использованием sphinx_rtd_theme
    • Документация с использованием sphinx_bootstrap_theme
    • Документация с использованием пользовательской темы или интегрированная на веб-сайт
    • Домашние страницы и другие сайты, не связанные с документацией
    • Книги, созданные с использованием Sphinx
    • Диссертации, изготовленные с использованием Sphinx
    • Проекты, интегрирующие функциональность Sphinx

Начало работы — документация Sphinx

Sphinx — это генератор документации или инструмент, переводящий набор простых
текстовые исходные файлы в различные выходные форматы, автоматически создавая
перекрестные ссылки, индексы и т. д. То есть, если у вас есть каталог, содержащий
куча reStructuredText или Markdown
документы, Sphinx может генерировать серию файлов HTML, файл PDF (через LaTeX),
справочные страницы и многое другое.

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

Цель этого документа — дать вам представление о том, что такое Sphinx и
как вы можете его использовать. Когда вы закончите здесь, вы можете проверить
руководство по установке, за которым следует введение в
формат разметки по умолчанию, используемый Sphinx, reStucturedText.

Отличное «введение» в написание документации в целом — почему и как — см.
также Напишите документы, написанные Эриком Холшером.

Настройка источников документации

Корневой каталог коллекции Sphinx исходных текстовых документов
называется исходным каталогом. Этот каталог также содержит Sphinx
файл конфигурации conf.py , где вы можете настроить все аспекты того, как
Sphinx читает ваши исходники и создает вашу документацию. [1]

Sphinx поставляется со сценарием под названием sphinx-quickstart , который устанавливает
исходный каталог и создает по умолчанию conf.py с наиболее полезными
значения конфигурации из нескольких вопросов, которые он задает вам. Чтобы использовать это, запустите:

 $ сфинкс-быстрый старт
 

Определение структуры документа

Предположим, вы запустили sphinx-quickstart . Он создал источник
каталог с conf.py и корневым документом index.rst .
Основная функция корневого документа — служить страницей приветствия.
содержать корень «дерева оглавления» (или токтри ). это один
из основных вещей, которые Sphinx добавляет в reStructuredText, способ подключения
несколько файлов в единую иерархию документов.

Директива toctree изначально пуста и выглядит так:

 .. toctree::
   :максимальная глубина: 2
 

Вы добавляете документы, перечисляя их в содержании директивы:

 .. toctree::
   :максимальная глубина: 2
   использование/установка
   использование/быстрый запуск
   ...
 

Именно так toctree для этой документации смотрит.
документы для включения даются в виде имен документов, которые вкратце
означает, что вы опускаете расширение имени файла и используете косую черту
( / ) в качестве разделителей каталогов.

Подробнее о директиве toctree.

Теперь вы можете создавать файлы, перечисленные в toctree , и добавлять содержимое, а также
их заголовки разделов будут вставлены (до уровня maxdepth ) в
место, где toctree 9Размещена директива 0189. Кроме того, Сфинкс теперь знает о
порядок и иерархия ваших документов. (Они могут содержать toctree
сами директивы, что означает, что вы можете создавать глубоко вложенные иерархии, если
необходимо. )

Добавление контента

В исходных файлах Sphinx можно использовать большинство функций стандартных
реструктурированный текст. Есть также несколько функций, добавленных Sphinx.
Например, вы можете добавлять межфайловые ссылки переносимым способом (который работает
для всех типов вывода) с помощью исх. роль.

Например, если вы просматриваете HTML-версию, вы можете посмотреть исходный код
для этого документа — используйте ссылку «Показать исходный код» на боковой панели.

Todo

Обновите ссылку ниже, когда мы добавим новые руководства по ним.

Подробнее см. reStructuredText.
введение в reStructuredText, включая разметку, добавленную Sphinx.

Запуск сборки

Теперь, когда вы добавили несколько файлов и содержимого, давайте сделаем первую сборку
документы Сборка начинается с sphinx-build программа:

 $ sphinx-build -b исходный каталог html каталог сборки
 

, где sourcedir — исходный каталог, а builddir — это исходный каталог.
каталог, в который вы хотите поместить собранную документацию.
Параметр -b выбирает сборщика; в этом примере
Sphinx создаст файлы HTML.

См. справочную страницу sphinx-build для всех
параметры, которые поддерживает sphinx-build .

Тем не менее, sphinx-quickstart 9Скрипт 0012 создает Makefile и
make.bat , которые сделают вашу жизнь еще проще. Они могут быть выполнены
запустить сделать с именем билдера. Например.

 $ сделать html
 

Это приведет к созданию HTML-документов в выбранном вами каталоге сборки. Выполнять
сделайте без аргумента, чтобы узнать, какие цели доступны.

Как создавать PDF-документы?

make latexpdf запускает LaTeX Builder и легко вызывает pdfTeX
набор инструментов для вас.

Todo

Переместить весь этот раздел в руководство по rST или директивы

Документирование объектов

Одной из основных целей Sphinx является простое документирование объектов
очень общий смысл) в любом домене . Домен — это совокупность объектов
типы, которые принадлежат друг другу, с разметкой для создания и ссылки
описания этих объектов.

Наиболее заметным доменом является домен Python. Например, для документирования
Встроенная функция Python enumerate() , вы должны добавить это в один из ваших
исходные файлы.

 .. py: функция:: перечислить (последовательность [ начало = 0])
   Возвращает итератор, который возвращает кортежи индекса и элемента
   *последовательность*. (И так далее.)
 

Это отображается так:

перечислить( последовательность [ start=0 ])

Возвращает итератор, который возвращает кортежи индекса и элемента
последовательность . (И так далее.)

Аргументом директивы является подпись объекта, который вы
описать, содержание является документацией для него. Может быть несколько подписей
даны, каждый в своей строке.

Домен Python также является доменом по умолчанию, поэтому вам не нужно
префикс разметки с доменным именем.

 .. функция:: перечислить (последовательность [ начало = 0])
   ...
 

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

Есть еще несколько директив для документирования других типов Python
объекты, например ру:класс или ру:метод . Есть
также перекрестная ссылка роль для каждого из этих типов объектов. Этот
разметка создаст ссылку на документацию enumerate() .

 Функцию :py:func:`enumerate` можно использовать для...
 

И вот доказательство: Ссылка на enumerate() .

Опять же, py: можно не указывать, если домен Python используется по умолчанию. Это
не имеет значения, в каком файле содержится актуальная документация для
перечислить() ; Sphinx найдет его и создаст ссылку на него.

Для каждого домена будут действовать специальные правила того, как могут выглядеть подписи, и
сделать отформатированный вывод красивым или добавить определенные функции, такие как ссылки на
типы параметров, например. в доменах C/C++.

См. Домены для всех доступных доменов
и их директивы/роли.

Базовая конфигурация

Ранее мы упоминали, что файл conf.py управляет тем, как Sphinx
обрабатывает ваши документы. В этом файле, который выполняется как исходный код Python
файл, вы назначаете значения конфигурации. Для продвинутых пользователей: так как
выполняется Sphinx, вы можете выполнять в нем нетривиальные задачи, такие как расширение
sys.path или импорт модуля, чтобы узнать вашу версию
документирование.

Значения конфигурации, которые вы, возможно, захотите изменить, уже помещены в
conf.py от sphinx-quickstart и изначально закомментирован
(со стандартным синтаксисом Python: # комментирует остальную часть строки). К
измените значение по умолчанию, удалите знак решетки и измените значение. К
настроить значение конфигурации, которое не добавляется автоматически
сфинкс-быстрый старт , просто добавьте дополнительное задание.

Имейте в виду, что файл использует синтаксис Python для строк, чисел, списков и
скоро. Файл по умолчанию сохраняется в UTF-8, на что указывает кодировка
объявление в первой строке.

См. документацию по всем доступным
значения конфигурации.

Todo

Переместить весь этот документ в другой раздел

Автодок

При документировании кода Python обычно помещается много документации в
исходные файлы, в строках документации. Sphinx поддерживает включение
строки документации из ваших модулей с расширение (расширение представляет собой Python
модуль, предоставляющий дополнительные возможности для проектов Sphinx) под названием autodoc .

Чтобы использовать autodoc , вам необходимо активировать его в conf.py с помощью
помещая строку 'sphinx.ext.autodoc' в список, назначенный
расширений значение конфигурации:

 расширений = ['sphinx.ext.autodoc']
 

Тогда в вашем распоряжении есть несколько дополнительных указаний. Например, чтобы
задокументировать функцию io.open() , чтение подписи и
docstring из исходного файла, вы должны написать это:

 .. автофункция::io.open
 

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

 .. автомодуль::io
   :члены:
 

autodoc необходимо импортировать ваши модули, чтобы извлечь строки документации.
Поэтому вы должны добавить соответствующий путь к sys.path в свой
конф.py .

Предупреждение

autodoc импортирует модули для документирования. Если есть
модули имеют побочные эффекты при импорте, они будут выполняться autodoc
при запуске sphinx-build .

Если вы документируете сценарии (в отличие от библиотечных модулей), убедитесь, что они
основная подпрограмма защищена условием if __name__ == '__main__' .

См. sphinx.ext.autodoc для получения полного описания
возможности автодока.

Todo

Переместить этот документ в другой раздел

Интерсфинкс

Многие документы Sphinx, включая документацию Python, опубликованы на
Интернет. Если вы хотите сделать ссылки на такие документы из вашего
документации, вы можете сделать это с помощью sphinx.ext.intersphinx .

Чтобы использовать интерсфинкс, вам необходимо активировать его в conf.py с помощью
поместив строку 'sphinx.ext.intersphinx' в расширения
list и установите значение конфигурации intersphinx_mapping .

Например, чтобы сослаться на io.open() в руководстве по библиотеке Python, вам нужно
настройте свой intersphinx_mapping , например:

 intersphinx_mapping = {'python': ('https://docs.python.org/3', нет)}
 

А теперь вы можете написать перекрестную ссылку вроде :py:func:`io.