Користувальницькькі налаштування

Налаштування сайту


sphinx

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Наступна ревізія По сторонах наступні версії
sphinx [2018/08/25 11:28]
sphinx [2022/10/05 12:26]
nightfly [Автозапуск]
Рядок 1: Рядок 1:
 +====== Использование SphinxSearch в качестве альтернативного поискового движка для глобального поиска ======
 +
 +
 +{{ :sphinxlogo.png|}}
 +
 +\\
 +Начиная с версии 0.9.2 появилась альтернатива в виде полнотекстового поиска для модуля globalsearch. \\
 +\\
 +На тестах ведет себя куда быстрее чем jQuery autocomplete который используется в текущей реализации.\\
 +Плюс обладает огромной гибкостью при дальнейшем использовании. \\
 +
 +Disclaimer: \\
 +//Конечно же, само собой разумеется выполнение всех команд от рута.// \\
 +//Хотите от непривилегированного пользователя - внесите соответствующие изменения в конфигурацию.//
 +
 +===== Включение SphinxSearch =====
 +В alter.ini: \\ \\
 +Опция включающая альтернативный глобальный поиск на базе SphinxSearch.
 +  SPHINX_SEARCH_ENABLED=0
 +Хост с SphinxSearch.
 +  SPHINX_SEARCH_HOST="127.0.0.1"
 +Порт для подключения к SphinxSearch.
 +  SPHINX_SEARCH_SQL_PORT="9306"
 +Имя пользователя для подключения к SphinxSearch (по умолчанию пустое!).
 +  SPHINX_SEARCH_USER=""
 +Пароль для подключения к SphinxSearch (по умолчанию пустое!).
 +  SPHINX_SEARCH_PASSWORD=""
 +Имя БД для подключения к SphinxSearch (по умолчанию пустое!).
 +  SPHINX_SEARCH_DB=""
 +Имена индексов (полей) в которых производить поиск в SphinxSearch. По умолчанию contract,paymentid,macodt,macminus отключены. Для активации нужно расскоментировать соответствующие строки в конфигурационном файле и дождаться переиндексирования, только потом можно включать их в этой опции.
 +  ;SPHINX_SEARCH_INDEXES="ip,mac,realname,login,fulladdress,mobile,phone"
 +Ограничение элементов в ответе при поиске в SphinxSearch. Не стоит задирать этот параметр т.к. будет сказываться на поедании ресурсов браузера javascript-ом.
 +  ;SPHINX_SEARCH_LIMIT=100
 +Дополнительная сортировка результатов
 +  SPHINX_SEARCH_SORT="GROUP BY `id`,`title`"
 +
 +\\ \\
 +Само собой требует
 +  GLOBALSEARCH_ENABLED=1
 +  
 +===== Масштабируемость =====
 +
 +Стоит отметить возможное горизонтальное расширение с любыми балансировщиками (хотя вряд ли пригодится для подобных нагрузок). \\
 +Тоже самое про отказоустойчивость. Любые варианты от балансировщиков с health check до VRRP. \\
 +\\
 +\\
 +Так же важно понимать что никаких ограничений по поиску со стороны Ubilling нету. \\
 +Если вы хотите добавить кастомный индекс для поиска - нужно две вещи:
 +  - Создать новый индекс в SphinxSearch + переиндексация.
 +  - Добавить ваш индекс в опцию SPHINX_SEARCH_INDEXES.
 +
 +
 +===== Установка на FreeBSD =====
 +
 +Тестировал на FreeBSD 13.1, 13.0, 12.3\\
 +
 +  * Скачиваем бинарники с [[http://sphinxsearch.com/downloads/current/|официального сайта разработчика SphinxSearch]].
 +<code>
 +# mkdir /opt
 +# cd /opt
 +# fetch http://sphinxsearch.com/files/sphinx-3.1.1-612d99f-freebsd-amd64.tar.gz
 +# tar zxvf sphinx-3.1.1-612d99f-freebsd-amd64.tar.gz
 +# mv sphinx-3.1.1 sphinx
 +# cd sphinx
 +# mkdir -p sphinxdata/logs
 +# touch sphinxdata/logs/searchd.log
 +# rm sphinxdata/searchd.state
 +</code>
 +  * Копируем и правим конфиг. Интересует в основном секция подключения к БД.
 +<code>
 +# cp /usr/local/www/apache24/data/billing/docs/sphinxsearch/sphinx3.conf /opt/sphinx/etc/sphinx.conf
 +</code>
 +
 +<code>
 +# vi /opt/sphinx/etc/sphinx.conf
 +</code>
 +
 +<file sphinx.conf>
 +        sql_host                = localhost
 +        sql_user                = root
 +        sql_pass                = rootpassword
 +        sql_db                  = stg
 +</file>
 +
 +  * Запускаем indexer.
 +<code>
 +# /opt/sphinx/bin/indexer --config /opt/sphinx/etc/sphinx.conf --all
 +</code>
 +
 +  * После чего запускаем searchd.
 +<code>
 +# /opt/sphinx/bin/searchd --config /opt/sphinx/etc/sphinx.conf
 +</code>
 +  * Правим alter.ini под свои реалии. По дефолту принимается что sphinx запущен с биллингом на одном сервере, но вполне заменив ip адрес на нужный - можете развернуть и на рядом стоящем хосте\виртуалке. Важно что USER, PASSWORD, DB - по дефолту пустые. Это не страшно. Это не значит "придумай сам". Так задумано.
 +<file alter.ini>
 +SPHINX_SEARCH_ENABLED=1
 +SPHINX_SEARCH_HOST="127.0.0.1"
 +SPHINX_SEARCH_SQL_PORT="9306"
 +SPHINX_SEARCH_USER=""
 +SPHINX_SEARCH_PASSWORD=""
 +SPHINX_SEARCH_DB=""
 +SPHINX_SEARCH_SORT="GROUP BY `id`,`title`"
 +</file>
 +
 +
 +===== Установка на Debian GNU/Linux =====
 +
 +В случае если вы использовали [[setupdebianstaller|Debianstaller]], как нормальный человек - делать вам вообще ничего не нужно. Все уже установлено и настроено. Просто добавьте в ваш crontab индексацию, например так:
 +<code>
 +*/30 * * * *       /opt/sphinx/bin/indexer --config /opt/sphinx/etc/sphinx.conf --all --rotate
 +</code>
 +
 +и включите опцию 
 +<code ini>
 +SPHINX_SEARCH_ENABLED=1
 +</code>
 +
 +Все, больше на [[setupdebianstaller|Debian Linux]] делать ничего не нужно. Все заработает само по себе.
 +
 +===== Обновление индексов =====
 +В crontab -e:
 +<file crontab>
 +*/5 * * * *       /opt/sphinx/bin/indexer --config /opt/sphinx/etc/sphinx.conf --all --rotate
 +</file>
 +
 +===== Автозапуск =====
 +Добавим в /usr/local/etc/rc.d/billing в секцию start_cmd:
 +
 +<code>
 +       /opt/sphinx/bin/searchd --config /opt/sphinx/etc/sphinx.conf
 +       echo "SphinxSearch started"
 +</code>
 +
 +Что бы получилось следующее:
 +
 +<file /etc/rc.d/billing>
 +start_cmd()
 +{
 +       echo "Starting stargazer"
 +       /usr/sbin/stargazer || echo "failed to start stargazer"
 +       /usr/local/bandwidthd/bandwidthd
 +       echo "Bandwidthd started"
 +       /opt/sphinx/bin/searchd --config /opt/sphinx/etc/sphinx.conf
 +       echo "SphinxSearch started"
 +}
 +</file>
 +
 +===== Ротация логов =====
 +Добавим следующие правила в /etc/newsyslog.conf
 +
 +<file newsyslog.conf>
 +/opt/sphinx/sphinxdata/logs/query.log   600  5     100       JC  /opt/sphinx/sphinxdata/searchd.pid 30
 +/opt/sphinx/sphinxdata/logs/searchd.log 600  5     100       JC  /opt/sphinx/sphinxdata/searchd.pid 30
 +</file>
 +
 +И перезапустим newsyslog:
 +<code>
 +# service newsyslog restart
 +</code>
 +
 +===== Безопасность =====
 +
 +Вы можете подумать что данного рода информация чувствительная и вы не хотели бы ей делится с посторонними? Собственно пара слов о безопасности. \\
 +Так как в базовом варианте не предусмотрена аутентификация - то стоит ограничить доступность демона директивой listen в sphinx.conf. \\
 +Либо же ограничить доступ к нему фаерволом. \\
 +Так же хорошим тоном будет создать отдельного юзера в MySQL для поиска и не ходить под рутовым логином и паролем.
  
sphinx.txt · Востаннє змінено: 2024/04/20 17:11 повз nightfly