Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
|
sphinx [2019/03/15 17:13] |
sphinx [2025/10/14 15:27] (поточний) nightfly |
||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== Використання SphinxSearch як альтернативного пошукового рушія для глобального пошуку ====== | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | Починаючи з версії 0.9.2 з' | ||
| + | \\ | ||
| + | На тестах поводиться набагато швидше, | ||
| + | Плюс має величезну гнучкість при подальшому використанні. \\ | ||
| + | |||
| + | Disclaimer: \\ | ||
| + | // | ||
| + | // | ||
| + | |||
| + | ===== Увімкнення SphinxSearch ===== | ||
| + | У alter.ini: \\ \\ | ||
| + | Опція вмикає альтернативний глобальний пошук на базі SphinxSearch. | ||
| + | SPHINX_SEARCH_ENABLED=1 | ||
| + | Хост зі SphinxSearch. | ||
| + | SPHINX_SEARCH_HOST=" | ||
| + | Порт для підключення до SphinxSearch. | ||
| + | SPHINX_SEARCH_SQL_PORT=" | ||
| + | Ім' | ||
| + | SPHINX_SEARCH_USER="" | ||
| + | Пароль для підключення до SphinxSearch (за замовчуванням порожній!). | ||
| + | SPHINX_SEARCH_PASSWORD="" | ||
| + | Ім' | ||
| + | SPHINX_SEARCH_DB="" | ||
| + | Імена індексів (полів), | ||
| + | ; | ||
| + | Обмеження елементів у відповіді під час пошуку в SphinxSearch. Не варто задирати цей параметр, | ||
| + | ; | ||
| + | Додаткове сортування результатів | ||
| + | SPHINX_SEARCH_SORT=" | ||
| + | |||
| + | \\ \\ | ||
| + | Само собою потребує | ||
| + | GLOBALSEARCH_ENABLED=1 | ||
| + | | ||
| + | ===== Масштабованість ===== | ||
| + | |||
| + | Варто відзначити можливе горизонтальне розширення з будь-якими балансувальниками (хоча навряд чи стане в пригоді для подібних навантажень). \\ | ||
| + | Теж саме про відмовостійкість. Будь-які варіанти від балансувальників з health check до VRRP. \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | Так само важливо розуміти, | ||
| + | Якщо ви хочете додати кастомний індекс для пошуку - потрібно дві речі: | ||
| + | - Створити новий індекс у SphinxSearch + пере індексація. | ||
| + | - Додати ваш індекс в опцію SPHINX_SEARCH_INDEXES. | ||
| + | |||
| + | |||
| + | ===== Встановлення на FreeBSD ===== | ||
| + | |||
| + | Тестував на FreeBSD 14.0, 13.3, 13.2\\ | ||
| + | |||
| + | * Завантажуємо бінарники з [[http:// | ||
| + | < | ||
| + | # mkdir /opt | ||
| + | # cd /opt | ||
| + | # fetch http:// | ||
| + | # tar zxvf sphinx-3.1.1-612d99f-freebsd-amd64.tar.gz | ||
| + | # mv sphinx-3.1.1 sphinx | ||
| + | # cd sphinx | ||
| + | # mkdir -p sphinxdata/ | ||
| + | # touch sphinxdata/ | ||
| + | # rm sphinxdata/ | ||
| + | </ | ||
| + | * Копіюємо і правимо конфіг. Цікавить переважно секція підключення до БД. | ||
| + | < | ||
| + | # cp / | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # vi / | ||
| + | </ | ||
| + | |||
| + | <file sphinx.conf> | ||
| + | sql_host | ||
| + | sql_user | ||
| + | sql_pass | ||
| + | sql_db | ||
| + | </ | ||
| + | |||
| + | * Запускаємо indexer. | ||
| + | < | ||
| + | # / | ||
| + | </ | ||
| + | |||
| + | * Після чого запускаємо searchd. | ||
| + | < | ||
| + | # / | ||
| + | </ | ||
| + | * Правимо alter.ini під свої реалії. За дефолтом приймається, | ||
| + | <file alter.ini> | ||
| + | SPHINX_SEARCH_ENABLED=1 | ||
| + | SPHINX_SEARCH_HOST=" | ||
| + | SPHINX_SEARCH_SQL_PORT=" | ||
| + | SPHINX_SEARCH_USER="" | ||
| + | SPHINX_SEARCH_PASSWORD="" | ||
| + | SPHINX_SEARCH_DB="" | ||
| + | SPHINX_SEARCH_SORT=" | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Оновлення індексів ===== | ||
| + | У crontab -e: | ||
| + | <file crontab> | ||
| + | */5 * * * * / | ||
| + | </ | ||
| + | |||
| + | ===== Автозапуск ===== | ||
| + | Додамо у / | ||
| + | |||
| + | < | ||
| + | / | ||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | Що б вийшло наступне: | ||
| + | |||
| + | <file / | ||
| + | start_cmd() | ||
| + | { | ||
| + | echo " | ||
| + | / | ||
| + | / | ||
| + | echo " | ||
| + | / | ||
| + | echo " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Ротація логів ===== | ||
| + | Додамо такі правила у / | ||
| + | |||
| + | <file newsyslog.conf> | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | І перезапустимо newsyslog: | ||
| + | < | ||
| + | # service newsyslog restart | ||
| + | </ | ||
| + | |||
| + | ===== Встановлення на Debian GNU/Linux ===== | ||
| + | |||
| + | У разі якщо ви використовували [[setupdebianstaller|Debianstaller]], | ||
| + | < | ||
| + | */30 * * * * / | ||
| + | </ | ||
| + | |||
| + | і увімкніть опцію | ||
| + | <code ini> | ||
| + | SPHINX_SEARCH_ENABLED=1 | ||
| + | </ | ||
| + | |||
| + | Усе, більше на [[setupdebianstaller|Debian Linux]] робити нічого не потрібно. Усе запрацює саме по собі. | ||
| + | |||
| + | |||
| + | |||
| + | ===== Безпека ===== | ||
| + | |||
| + | Ви можете подумати, | ||
| + | Оскільки в базовому варіанті не передбачена аутентифікація - то варто обмежити доступність демона директивою listen в sphinx.conf. \\ | ||
| + | Або ж обмежити доступ до нього фаєрволом. \\ | ||
| + | Так само хорошим тоном буде створити окремого юзера в MySQL для пошуку і не ходити під рутовим логіном і паролем. | ||