Содержание
Настройка 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.