Программирование

Движок Sphinx — найди быстрее искомое

Доброго времени суток друзья.

Хочу поделиться с Вами настройкой и установкой поисковой системы под названием Sphinx (Sphinxsearch). Немного о нем, что это за зверь-пирамида, поисковый движок и зачем он и с чем его лопают кушают.

Sphinx (англ.SQL Phrase Index) — система полнотекстового поиска, разработанная Андреем Аксеновым и распространяемая по лицензии GNU GPL. Отличительной особенностью является высокая скорость индексации и поиска, а также интеграция с существующими СУБД (MySQL, PostgreSQL) и API для распространённых языков веб-программирования (официально поддерживаются PHP, Python, Java; существуют реализованные сообществом API для Perl, Ruby,.NET[1] и C++).

© Согласно википедии

Возможности поискового двига:

  1. Высокая скорость поиска (до 150—250 запросов в секунду на каждое процессорное ядро с 1 000 000 документов);
  2. Высокая масштабируемость (крупнейший известный кластер индексирует до 3 000 000 000 документов и поддерживает более 50 миллионов запросов в день);
  3. Поддержка распределенного поиска;
  4. Поддержка морфологического поиска — имеются встроенные модули для английского, русского и чешского языков; доступны модули для французского, испанского, португальского, итальянского, румынского, немецкого, голландского, шведского, норвежского, датского, финского, венгерского языков и много чего еще.

Для детальности можете посетить оффсайт Sphinx

Ну а теперь приступим к настройке, предполагается что он у Вас уже стоит:

До начала поиска надо создать конфигурационный файл, проиндексировать информацию и указать что и как индексировать.

1) Конфигурация движка следующая (у Вас будет другая, эта будет для примера) файл sphinx.conf:
source name {
 type = mysql
 sql_host = Укажите хост вашей БД
 sql_user = Укажите пользователя вашей БД
 sql_pass = Укажите пароль вашей БД
 sql_db = Укажите наименование вашей БД
 sql_port = 3306
 sql_query_pre = SET NAMES utf8
 sql_query = SELECT id, name FROM profiles
 sql_attr_uint = id
 sql_query_info = SELECT name FROM profiles WHERE id=$id 
}

index name {
   source = street_name
   path = /var/lib/sphinxsearch/data/name
   morphology = stem_ru
   min_word_len = 1
   charset_type = utf-8
 }
 
 searchd {
   listen = 127.0.0.1:9306:mysql41
   log = /var/log/sphinxsearch/searchd.log
   query_log = /var/log/sphinxsearch/query.log
   pid_file = /var/run/sphinxsearch/searchd.pid
   read_timeout = 5
   max_children = 30
   max_matches = 1000
   seamless_rotate = 1
   preopen_indexes = 0
   unlink_old = 1
 }

 2) Добавить данную конфигурацию в файл /etc/sphinxsearch/sphinx.conf (если такого не существует, значит Sphinx у вас не установлен).

2.1.) Установить Sphinx будет быстрее настройки :), выполните команду ниже:

sudo apt-get install sphinxsearch

3) Найти и изменить директивы:

sql_host              = Укажите хост вашей БД
sql_user              = Укажите пользователя вашей БД
sql_pass             = Укажите пароль вашей БД
sql_db                  = Укажите наименование вашей БД

4) Проиндексируем нашу БД, для этого выполним команду(под суперпользователем):

# indexer --config /etc/sphinxsearch/sphinx.conf --all

Примечание: если после выполнения команды у Вас вылетела ошибка данного плана:

using config file ‘/etc/sphinxsearch/sphinx.conf’…
indexing index ‘ecm3’…
FATAL: failed to lock /var/lib/sphinxsearch/data/ecm3.spl: Resource temporarily unavailable, will not index. Try —rotate option.

Ответ: Ваш проект уже проиндексирован и не требует индексации!

5) Для поиска в консоли есть утилита «search»:

# search --config /etc/sphinxsearch/sphinx.conf искомая комбинация

Ну в общем и целом вроде и все, если что забыл поправьте меня. Настройка поискового движка SPHINX завершена. Приятной работы и поиска.

Добавить комментарий

Войти с через: 

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Защита от роБота * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.