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

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


sphinx

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Попередня ревізія
Остання ревізія По сторонах наступні версії
sphinx [2018/08/25 11:28]
sphinx [2023/12/06 17:52]
nightfly
Рядок 1: Рядок 1:
 +====== Використання SphinxSearch як альтернативного пошукового рушія для глобального пошуку ======
 +
 +
 +{{ :sphinxlogo.png|}}
 +
 +\\
 +Починаючи з версії 0.9.2 з'явилася альтернатива у вигляді повнотекстового пошуку для модуля globalsearch. \\
 +\\
 +На тестах поводиться набагато швидше, ніж jQuery autocomplete, який використовується в поточній реалізації.
 +Плюс має величезну гнучкість при подальшому використанні. \\
 +
 +Disclaimer: \\
 +//Звісно ж, само собою зрозуміло виконання всіх команд від рута.// \\ \\
 +//Хочете від непривілейованого користувача - внесіть відповідні зміни в конфігурацію.//
 +
 +===== Увімкнення SphinxSearch =====
 +У alter.ini: \\ \\
 +Опція вмикає альтернативний глобальний пошук на базі SphinxSearch.
 +  SPHINX_SEARCH_ENABLED=1
 +Хост зі 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