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

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


sphinx

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Наступна ревізія По сторонах наступні версії
sphinx [2018/08/25 11:28]
sphinx [2023/06/17 13:49]
skybetik
Рядок 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