Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія | Наступна ревізія По сторонах наступні версії | ||
sphinx [2020/02/19 12:00] |
sphinx [2022/09/24 14:39] 127.0.0.1 зовнішнє редагування |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
+ | ====== Использование SphinxSearch в качестве альтернативного поискового движка для глобального поиска ====== | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | \\ | ||
+ | Начиная с версии 0.9.2 появилась альтернатива в виде полнотекстового поиска для модуля globalsearch. \\ | ||
+ | \\ | ||
+ | На тестах ведет себя куда быстрее чем jQuery autocomplete который используется в текущей реализации.\\ | ||
+ | Плюс обладает огромной гибкостью при дальнейшем использовании. \\ | ||
+ | |||
+ | Disclaimer: \\ | ||
+ | // | ||
+ | // | ||
+ | |||
+ | ===== Включение SphinxSearch ===== | ||
+ | В alter.ini: \\ \\ | ||
+ | Опция включающая альтернативный глобальный поиск на базе SphinxSearch. | ||
+ | SPHINX_SEARCH_ENABLED=0 | ||
+ | Хост с SphinxSearch. | ||
+ | SPHINX_SEARCH_HOST=" | ||
+ | Порт для подключения к SphinxSearch. | ||
+ | SPHINX_SEARCH_SQL_PORT=" | ||
+ | Имя пользователя для подключения к SphinxSearch (по умолчанию пустое!). | ||
+ | SPHINX_SEARCH_USER="" | ||
+ | Пароль для подключения к SphinxSearch (по умолчанию пустое!). | ||
+ | SPHINX_SEARCH_PASSWORD="" | ||
+ | Имя БД для подключения к SphinxSearch (по умолчанию пустое!). | ||
+ | SPHINX_SEARCH_DB="" | ||
+ | Имена индексов (полей) в которых производить поиск в SphinxSearch. По умолчанию contract, | ||
+ | ; | ||
+ | Ограничение элементов в ответе при поиске в SphinxSearch. Не стоит задирать этот параметр т.к. будет сказываться на поедании ресурсов браузера javascript-ом. | ||
+ | ; | ||
+ | Дополнительная сортировка результатов | ||
+ | SPHINX_SEARCH_SORT=" | ||
+ | |||
+ | \\ \\ | ||
+ | Само собой требует | ||
+ | GLOBALSEARCH_ENABLED=1 | ||
+ | | ||
+ | ===== Масштабируемость ===== | ||
+ | |||
+ | Стоит отметить возможное горизонтальное расширение с любыми балансировщиками (хотя вряд ли пригодится для подобных нагрузок). \\ | ||
+ | Тоже самое про отказоустойчивость. Любые варианты от балансировщиков с health check до VRRP. \\ | ||
+ | \\ | ||
+ | \\ | ||
+ | Так же важно понимать что никаких ограничений по поиску со стороны Ubilling нету. \\ | ||
+ | Если вы хотите добавить кастомный индекс для поиска - нужно две вещи: | ||
+ | - Создать новый индекс в 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 под свои реалии. По дефолту принимается что sphinx запущен с биллингом на одном сервере, | ||
+ | <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 для поиска и не ходить под рутовым логином и паролем. | ||