hosting:extra:sphinx

2.2.6. Sphinx

Sphinx (SQL Phrase Index) — система полнотекстового поиска с поддержкой морфологии различных языков. Позволяет быстро и гибко искать информацию в базе данных по произвольному тексту.

  • На тарифах бизнес-хостинга Sphinx доступен по умолчанию. Заказывать его отдельно не нужно.
  • Заказывать Sphinx может только владелец хостинг-аккаунта.
  • При первом заказе Sphinx доступен бесплатный 7-дневный тестовый период.

Чтобы заказать Sphinx, выполните следующее:

  1. Откройте раздел «Хостинг».
  2. В блоке «Дополнительные сервисы» нажмите «Sphinx»:
  3. В блоке «Основные данные» нажмите «Заказать»:
  4. Нажмите «Заказать»:
  5. Если услуга заказывается впервые, пропустите этот шаг, чтобы воспользоваться бесплатным 7-дневным тестовым периодом. В противном случае оплатите автоматически сформированный счёт любым из доступных способов и дождитесь зачисления оплаты.
  6. Подождите примерно 30 минут, пока активируется услуга.

Чтобы использовать Sphinx на сайте нужно настроить как сам Sphinx, так и сайт.

После заказа Sphinx на странице этой допуслуги появляется две вкладки:

Вкладка содержит правила, описывающие, с какими данными и как должен работать Sphinx. По умолчанию в конфигурацию подставляется шаблон с примером:

Конфигурация состоит из двух секций:

  • Источник данных (source) — конфигурация источника данных и его название (в примере db_source):
    • Тип данных (type) — тип источника данных (в примере mysql).
    • Данные для подключения к базе данных (sql_host, sql_port, sql_user, sql_pass, sql_db) — данные для подключения к базе данных MySQL, откуда будет браться информация для индексирования.
    • Предварительный запрос (sql_query_pre) — запрос, который будет перед основным запросом на получение данных из базы (в примере SET NAMES utf8 — установка кодировки UTF-8).
    • Основной запрос (sql_query) — запрос на получение из базы данных необходимых данных для индексирования (в примере select id, title, content from table — столбцы id, title и content из таблицы table).
    • Другие директивы — позволяют определять порядок группировки, фильтрации, сортировки (подробную информацию можно найти в официальной документации).
  • Параметры индексации (index) — конфигурация индекса и его название (в примере test_index):
    • Источник данных для индексирования (source) — название источника данных, откуда будет браться информация для индексирования (в примере db_source — см. выше).
    • Путь, по которому будут храниться данные индекса (path) — абсолютный путь к файлу с индексами (в примере /home/example/.system/sphinx/test_index).
    • Настройки морфологии (morphology) — название библиотеки (в примере stem_ru), которая будет использоваться для поиска слова с разными словоформами — например, по запросу «собака» будут возвращаться результаты с вариантами «собаки», «собакой», «собаками» и т. д.
    • Сохранение в индексе слов в исходном виде (index_exact_words) — при использовании совместно с директивой expand_keywords позволяет возвращать по запросу более релевантные результаты (в примере 1 — включено).
    • Минимальная длина слова для индексации (min_word_len) — по умолчанию используется 1, но слова такой длины обычно не несут смысловой нагрузки (в примере 3).
    • Другие директивы — позволяют определять порядок группировки, фильтрации, сортировки (подробную информацию можно найти в официальной документации).

С подробным описанием работы Sphinx и списком всех его параметров можно ознакомиться в официальной документации (англ.).

Ниже можно:

  • Выбрать протокол доступа к поисковому демону Sphinx (searchd):
    • «MySQL» — доступ через SphinxQL, разновидность SQL, похожую на MySQL.
    • «Sphinx» — доступ через SphinxAPI, собственный API Sphinx.
  • Включить или отключить ведение лога запросов к Sphinx — query_log.

После нажатия «Сохранить конфигурацию»:

  • Sphinx будет перезапущен.
  • Если в конфигурации будут обнаружены секции, описывающие дисковые поисковые индексы:
    • Для них автоматически будут созданы отдельные cron-задачи на вкладке «Индексы» с периодичностью обновления раз в 15 минут.
    • Сразу после сохранения конфигурационного файла будет запущено создание индексов (может занять некоторое время).
Вкладка содержит список добавленных индексов:

Колонки:

  • «Индекс» — название индекса. Указывается в конфигурации в секции с параметрами индексации.
  • «Частота обновления» — текущее расписание запуска индексирования в стандартном формате cron. По умолчанию индексирование запускается раз в 15 минут.
  • Кнопки:
    • Приостановка/запуск — кнопка приостановки/запуска индексирования по расписанию.
    • Редактирование — кнопка изменения расписания запуска индексирования.
    • Удаление — кнопка удаления индекса. Внимание! После нажатия из конфигурации будет удалена секция с параметрами индексации для данного индекса.

Настройка сайта для работы со Sphinx находится в компетенции разработчика сайта или привлечённых сторонних специалистов.

Задача сводится к следующим этапам:

  1. Изучить содержимое базы данных сайта и определить, по каким именно данным требуется быстрый поиск.
  2. Сконфигурировать Sphinx с нужными параметрами: указать, из какой базы данных нужно брать данные, какие таблицы и столбцы нужно индексировать, задать правила индексации.
  3. Добавить на сайт код, который вместо стандартного поиска в базе данных будет искать данные в созданном индексе Sphinx. Код может быть написан разработчиком либо самостоятельно, либо за основу могут быть взяты готовые плагины или модули, упомянутые на официальном сайте.

Подключение сайта к Sphinx выполняется через сокет. Путь к сокету можно найти на странице управления Sphinx.

Чтобы просмотреть логи Sphinx, выполните следующее:

  1. Скопируйте путь к логу из раздела управления Sphinx.
  2. Выполните одну из команд:
    • Просмотр полного лога:
      cat ~/.system/sphinx/searchd.log
    • Мониторинг лога в реальном времени (для завершения используйте сочетание Ctrl+C):
      tail -f ~/.system/sphinx/searchd.log
  • hosting/extra/sphinx.txt
  • Последнее изменение: 2020/11/23 15:28
  • zinenko