Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Попередня ревізія Наступна ревізія По сторонах наступні версії | ||
sphinx [2018/08/25 11:28] |
sphinx [2023/06/17 13:49] skybetik |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== Використання SphinxSearch як альтернативного пошукового движка для глобального пошуку ====== | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | \\ | ||
+ | Починаючи з версії 0.9.2 з' | ||
+ | \\ | ||
+ | На тестах поводиться набагато швидше, | ||
+ | Плюс має величезну гнучкість при подальшому використанні. \\ | ||
+ | |||
+ | Disclaimer: \\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | ===== Увімкнення SphinxSearch ===== | ||
+ | У alter.ini: \\ \\ | ||
+ | Опція вмикає альтернативний глобальний пошук на базі SphinxSearch. | ||
+ | SPHINX_SEARCH_ENABLED=0 | ||
+ | Хост зі 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 13.1, 13.0, 12.3\\\ | ||
+ | |||
+ | * Завантажуємо бінарники з [[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=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Установка на Debian GNU/Linux ===== | ||
+ | |||
+ | В случае если вы использовали [[setupdebianstaller|Debianstaller]], | ||
+ | < | ||
+ | */30 * * * * / | ||
+ | </ | ||
+ | |||
+ | и включите опцию | ||
+ | <code ini> | ||
+ | SPHINX_SEARCH_ENABLED=1 | ||
+ | </ | ||
+ | |||
+ | Все, больше на [[setupdebianstaller|Debian Linux]] делать ничего не нужно. Все заработает само по себе. | ||
+ | |||
+ | ===== Обновление индексов ===== | ||
+ | В crontab -e: | ||
+ | <file crontab> | ||
+ | */5 * * * * / | ||
+ | </ | ||
+ | |||
+ | ===== Автозапуск ===== | ||
+ | Добавим в / | ||
+ | |||
+ | < | ||
+ | / | ||
+ | echo " | ||
+ | </ | ||
+ | |||
+ | Что бы получилось следующее: | ||
+ | |||
+ | <file / | ||
+ | start_cmd() | ||
+ | { | ||
+ | echo " | ||
+ | / | ||
+ | / | ||
+ | echo " | ||
+ | / | ||
+ | echo " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ===== Ротация логов ===== | ||
+ | Добавим следующие правила в / | ||
+ | |||
+ | <file newsyslog.conf> | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | И перезапустим newsyslog: | ||
+ | < | ||
+ | # service newsyslog restart | ||
+ | </ | ||
+ | |||
+ | ===== Безопасность ===== | ||
+ | |||
+ | Вы можете подумать что данного рода информация чувствительная и вы не хотели бы ей делится с посторонними? | ||
+ | Так как в базовом варианте не предусмотрена аутентификация - то стоит ограничить доступность демона директивой listen в sphinx.conf. \\ | ||
+ | Либо же ограничить доступ к нему фаерволом. \\ | ||
+ | Так же хорошим тоном будет создать отдельного юзера в MySQL для поиска и не ходить под рутовым логином и паролем. | ||