- Игорь Чакрыгин
- Sphinx — Установка и настройка
- Шаг 1: Установка Sphinx
- Шаг 2: Создание рабочей папки
- Шаг 3: Регистрация службы Sphinx
- Шаг 4: Запуск службы Sphinx
- Шаг 5: Первый запрос
- Заключение
- Приложение I – Установка и настройка Python Sphinx в ОС Windows¶
- Установка¶
- Сборка документации¶
- Sphinx. Установка и настройка.
- Установка и настройка Sphinx на Linux
- Настройка Sphinx
- Блок source
- Sphinx
- Установка Sphinx
- Sphinx 2
- Sphinx 3
- Запуск Sphinx
Игорь Чакрыгин
Sphinx — Установка и настройка
Не так давно я решил более подробно изучить замечательный механизм полнотекстового поиска, которыйносит название Sphinx. Вы наверняка слышали о нём. Его установка, настройка и использование действительно очень просты. Несмотря на это, при первой попытке разобраться во всех деталях могут возникнуть некоторые трудности.
В данной статье я хочу подробно описать процесс установки Sphinx в Windows. Данная статья рассчитана на людей, которые, также как и я, ещё мало знакомы со Sphinx (или совсем не знакомы). Опытные разработчики вряд ли найдут в ней что-то новое.
Шаг 1: Установка Sphinx
Первым делом скачаем последнюю версию Sphinx для Windows с сайта sphinxsearch.com. (На момент написания статьи это версия 2.1.1-beta).
Дистрибутив представляет собой zip-архив. Распакуем его, скопируем полученную папку на диск C и переименуем её в sphinx (изначально она называется sphinx-2.1.1-beta-win64-id64-full). Теперь утилиты, которые входят в состав Sphinx (такие как indexer.exe и searchd.exe), будут находиться в папке c:\sphinx\bin\. Выглядит это примерно так:
Основной интерес для нас представляет папка bin. В ней находятся все утилиты, которые мы будем использовать в дальнейшем. Также нам могут пригодиться файлы sphinx.conf.in и sphinx-min.conf.in, которые представляют собой шаблоны файлов конфигурации. Их можно использовать в качестве примеров при настройке Sphinx.
Шаг 2: Создание рабочей папки
Нам так же необходимо подготовить рабочую папку, в которой будут храниться файл конфигурации, индексы и логи. В папке sphinx создадим папку data, а в ней в свою очередь создадим пустой файл config.txt и папки index, log и binlog. Эти папки нужно создать заранее, т.к. Sphinx не сможет создать их сам (у меня, по крайней мере, не смог) и просто не запустится.
Шаг 3: Регистрация службы Sphinx
Чтобы запустить Sphinx, его необходимо зарегистрировать как службу Windows. Запустим командную строку от имени администратора и введём следующую команду:
При необходимости, удалить ранее установленную службу можно следующей командой:
Шаг 4: Запуск службы Sphinx
Попытка сразу запустить зарегистрированную службу Sphinx завершится неудачей. Дело в том, что наш файл конфигурации (c:\sphinx\data\config.txt) пока ещё пуст. Добавим в него следующие строки:
Я намеренно убрал все необязательные настройки, оставив только самые важные.
- Настройка listen указывает, что Sphinx будет использовать порт 9306 и протокол mysql. Использование протокола mysql позволяет подключаться к Sphinx как к обычной базе данных MySQL.
- Настройка pid_file указывает расположение pid-файла, который используется для внутренних нужд.
- Настройки log и query_log указывают расположение файлов логов, в которые будут записываться все события.
- Настройка binlog_path указывает расположение файлов, которые могут использоваться для восстановления данных real-time индексов после сбоя.
Помимо этого, для запуска службы Sphinx необходимо создать хотя бы один индекс. В одной из следующих статей я постараюсь рассказать о создании индексов подробнее, а пока просто создадим фейковый real-time индекс. Добавим в файл конфигурации следующие строки:
Теперь зайдём в Панель управления — Администрирование — Службы, найдём в списке службу Sphinx и запустим её. При следующем запуске компьютера эта служба должна будет запускаться автоматически.
Шаг 5: Первый запрос
Как я уже упоминал выше, Sphinx поддерживает протокол MySQL, поэтому для подключения к нему и выполнения запросов можно использовать консольный клиент для этой базы данных.
С другими клиентами, такими как HeidiSQL, всё хуже, поскольку при подключении они пытаются выполнить некоторые команды, которые Sphinx просто не поддерживает (например, пытаются получить список баз данных или информацию о текущем пользователе). В результате подключение создать так и не получается.
Скачаем дистрибутив MySQL с сайта mysql.com. Распакуем скачанный zip-архив, скопируем полученную папку на диск C и переименуем её в mysql. Теперь утилиты, которые входят в состав MySQL (нас интересует только mysql.exe), будут находиться в папке c:\mysql\bin\.
Чтобы запустить консольный клиент и подключиться к Sphinx, откроем командную строку и введём команду:
Теперь мы можем выполнять различные запросы на языке SphinxQL. Поскольку у нас пока нет ни одного индекса (кроме индекса fake_index, который пуст и поэтому мало чем интересен) в качестве первого запроса получим статистику использования Sphinx. Введём следующую команду (точка с запятой в конце каждой команды является обязательной для консольного клиента):
Готово. Мы установили и настроили Sphinx, а также смогли выполнить одну команду. Можно переходить к созданию индексов.
Заключение
В данной статье я постарался максимально подробно описать процесс установки Sphinx в Windows, чтобы каждый, кто ещё не знаком с этим механизмом полнотекстового поиска, мог при желании повторить всю последовательность действий.
В следующей статье я постараюсь рассказать о создании индексов с использованием в качестве источников данных базы данных MS Sql Server и xml-фалов, а также приведу примеры запросов.
Приложение I – Установка и настройка Python Sphinx в ОС Windows¶
Установка¶
В данном разделе описана установка и настройка Python Sphinx в операционной системе Windows.
- Скачайте установочный файл интерпретатора языка программирования Python версии 3.5 – https://www.python.org.
- Запустите файл установки. На первом шаге поставьте галочку напротив Add Python 3.5 to PATH и нажмите Install Now.
- Дождитесь завершения установки интерпретатора.
- После установки интерпретатора необходимо установить модуль Python Sphinx, для этого откройте командную строку Пуск > cmd и выполните команду pip install sphinx .
На этом установка Python Sphinx закончена, можно переходить к сборке документации. Сборка осуществляется командой:
Сборка документации¶
Перед началом сборки создайте папку docs . Для примера создадим на рабочем столе папку Руководство , а в ней папку docs . Затем откройте командную строку Пуск > cmd и перейдите в папку с руководством, выполнив команду:
Подробнее о работе с командной строкой Windows смотрите Руководство по командной строке Windows.
Выполните команду sphinx-quickstart . Программа задаст ряд вопросов. Все настройки можно будет позже изменить в файле conf.py .
После выполнения стартового скрипта в папке docs появится следующая структура:
Makefile — содержит инструкции для генерации результирующего документа командой make.
build — директория, в которую будут помещены файлы в определенном формате после того, как будет запущен процесс их генерации.
source — директория, в которой располагаются исходные файлы.
index.rst — это корень проекта. Он соединяет документацию воедино, если она разделена на несколько файлов.
_static — в эту директорию помещаются все файлы, не являющиеся исходным кодом (например, изображения). Позже создаются связи этих файлов с директорией build.
conf.py — содержит конфигурационные параметры Sphinx, включая те, которые были выбраны при запуске sphinx-quickstart в окне терминала.
Чтобы выполнить сборку документации, перейдите в папку docs и выполните команду:
Будет выполнена сборка документации, в терминале появится информация о ходе сборки:
Собранные html-файлы появятся в папаке build\html .
Для удобства можно создать bat-файл, содержащий строку sphinx-build -b html source build\html . Подробнее смотрите Руководство по командной строке Windows.
Sphinx. Установка и настройка.
Поисковая машина Sphinx – это полнотекстовая поисковая система, которая бесплатна, быстра и масштабируема. Она предназначена для производительности и актуальности. Не имеет аналогов ни в одной традиционной базе данных.
Установка и настройка Sphinx на Linux
Чтобы установить Sphinx на сервер Ubuntu, введите:
Поисковая система Sphinx успешно установлена на сервер. После установки Sphinx нуждается в дополнительной настройке.
Настройка Sphinx
Конфигурации Sphinx должны храниться в файле sphinx.conf в каталоге /etc/sphinxsearch. Они состоят из трёх основных блоков: index, searchd и source. Описание каждого из них и общий вид конфигурационного файла можно найти ниже.
Для начала создайте конфигурационный файл:
Блок source
Блок source содержит описание источника данных для нашего индекса, параметров доступа к ним, атрибутов и правил их анализа.. Первый столбец sql_query должен содержать уникальный ID. Запрос SQL будет выполняться для каждого индекса, а затем передавать данные в индексный файл Sphinx.
Стоит отметить что раздел source конфигурации поддерживает наследование, и это весьма удобно, т.к. можно создать один source с настройками соединения с базой данных, и в остальных наследовать его, чтобы не дублировать одни и те же настройки.
Что еще интересного из настроек:
- sql_query_range — запрос который должен возвращать минимальное и максимальное значение id индексируемых записей, парамаметр пригодится для ranged query.
- sql_range_step — количество записей получаемых за одну итерацию в ranged query.
Sphinx
Sphinx — бесплатный поисковый движок. Он поможет создать быструю систему поиска информации по базе данных вашего сайта.
Установите Sphinx на аккаунт хостинга и настройте сайт для работы с ним.
Установка Sphinx
Подключитесь к аккаунту по SSH и скачайте дистрибутив с официального сайта: [username@server]$ wget ссылка_на_дистрибутив
Если вы размещаете готовый проект, выберите ту версию Sphinx, которую использовали при разработке сайта.
Распакуйте архив и переименуйте каталог с файлами движка:
[username@server]$ tar xvfz имя_архива.tar.gz
[username@server]$ mv имя_архива sphinx
Перейдите в директорию sphinx:
[username@server]$ cd sphinx
Дальнейший процесс установки зависит от выбранной вами версии программы.
Sphinx 2
Для сборки Sphinx 2 выполните команды:
[username@server sphinx]$ ./configure —prefix=/home/username/sphinx
[username@server sphinx]$ make
[username@server sphinx]$ make install
Перейдите в каталог etc:
[username@server sphinx]$ cd etc
Создайте конфигурационный файл sphinx.conf самостоятельно или воспользуйтесь шаблонами, входящими в дистрибутив. Мы взяли за основу файл sphinx-min.conf.dist, скопировали и переименовали его:
[username@server etc]$ cp sphinx-min.conf.dist sphinx.conf
Откройте файл в текстовом редакторе vim и укажите параметры подключения к базе данных:
[username@server etc]$ vim sphinx.conf
type = mysql
sql_host = localhost
sql_user = username_dbuser
sql_pass = password
sql_db = username_db
sql_port = 3306
Сохраните изменения и запустите Sphinx.
Sphinx 3
Sphinx 3 не нужно предварительно собирать, достаточно распаковать архив с программой и настроить конфигурационный файл. Он расположен в каталоге etc:
[username@server sphinx]$ cd etc
Мы используем входящий в дистрибутив шаблон sphinx-min.conf.dist. Скопируйте и переименуйте его:
[username@server etc]$ cp sphinx-min.conf.dist sphinx.conf
Откройте файл для редактирования и укажите параметры подключения к базе данных:
[username@server etc]$ vim sphinx.conf
type = mysql
sql_host = localhost
sql_user = username_dbuser
sql_pass = password
sql_db = username_db
sql_port = 3306
Нажмите Esc и по очереди выполните команды, чтобы изменить пути для размещения журналов работы Sphinx и индексов:
:%s/\/var\/data/\/home\/username\/sphinx\/data/
:%s/\/var\/log/\/home\/username\/sphinx\/log/
Сохраните изменения, выйдите из редактора и перейдите в каталог sphinx:
[username@server etc]$ cd ..
Создайте папки с именами log и data:
[username@server sphinx]$ mkdir log data
Теперь все готово к запуску движка.
Запуск Sphinx
Создайте файл с именем sphinx.sh в каталоге bin:
[username@server sphinx] cd bin
[username@server bin] vim sphinx.sh
Вставьте код скрипта в окно текстового редактора и сохраните изменения.
CONFIGFILE=»/home/username/sphinx/etc/sphinx.conf»
SPHINX=»/home/username/sphinx/bin/searchd -c $CONFIGFILE»
case «$1» in
start)
$SPHINX
;;
stop)
$SPHINX —stop
;;
restart)
$SPHINX —stop
sleep 2
$SPHINX
;;
status)
$SPHINX —status
;;
*)
echo «Unknown option $1»
;;
esac
С помощью sphinx.sh вы сможете быстро запускать (start), перезагружать (restart) и останавливать (stop) движок, а также смотреть статистику его работы (status).
Разрешите исполнение файла:
[username@server bin] chmod 755 sphinx.sh
Запустите Sphinx командой:
[username@server bin] ./sphinx.sh start
Проверьте, работает ли движок:
[username@server bin] ps -aux | grep sphinx
Если Sphinx запущен, вы увидите такой процесс:
Правильно провести индексацию базы данных вашего сайта поможет документация. Если при установке вы столкнулись с трудностями, обратитесь в сообщество Sphinx или нашу службу поддержки.