Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Попередня ревізія | ||
sphinx [2020/02/19 12:00] |
sphinx [2024/04/20 17:11] (поточний) 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 для пошуку і не ходити під рутовим логіном і паролем. | ||