Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Sphinx - поисковая машина. Абсолютно бесплатная. Sphinx достаточно активно используют некоторые вебмастера при создании своих сайтов.


Новые статьи на сайте:

 

Hilik     Настроим все

 http://www.hilik.org.ua/

 

Установка и настройка sphinx.

Sphinx – поисковая машина. Абсолютно бесплатная. Sphinx достаточно активно используют некоторые вебмастера при создании своих сайтов. Установка из портов достаточно проста.

cd /usr/ports/textproc/sphinxsearch
make install clean

Перед сборкой появляется небольшой диалог опций.


Options for sphinxsearch 0.9.9

[X] MYSQL MySQL support
[ ] PGSQL PostgreSQL support
[X] ICONV Iconv support
[X] OPTIMIZED_CFLAGS Use compiler optimization (-O3)
[X] ID64 use 64-bit document and word IDs
[ ] UNIXODBC unixODBC support


[ OK ] Cancel

Опции обеспечивают индексацию большого количества документов(ID64 позволяет пронумеровать большое число файлов), находящихся в базах MySQL, ICONV обеспечивает поддержку любых текстов в любых раскладках(это оптимистическое заявление).

Теперь переходим к настройке.
Sphinx состоит из 2-х компонент, из поисковика searchd и индексатора indexer.
То есть идея такая, индексатор набивает в поисковый кеш все со страниц или из базы, а к поисковику уже идут запросы на поиск, он ищет по этому поисковому кешу.
Настройка в принципе сводится к тому, что бы описать источники для индексатора.
К примеру для WordPress эта задача выглядит так(все настройки размещаются в конфигурационном файле /usr/local/etc/sphinx.conf):

source wordpress_src
{
# Настройки подключения к MySQL
type = mysql
sql_host = localhost
sql_user = wordpress
sql_pass = wordpress-123
sql_db = wordpress
sql_port = 3306
 
# Базы хранятся в UTF-8, выставляем кодовую страницу
sql_query_pre = SET NAMES utf8
sql_query_pre = SET CHARACTER SET utf8
 
# Это запросы на получение данных из базы
sql_query = SELECT ID as post_id, post_title, post_content FROM wp_posts WHERE post_type = 'post'
sql_query_info = SELECT * FROM wp_posts WHERE ID = $id
#Тут можно поставить время задержки, между запросами. Что бы снизить нагрузку на базу.
sql_ranged_throttle = 0
}

Далее в этом же файле настраиваются поисковый индекс:

index wordpress_idx
{
# Индексировать источник описанный ранее
source = wordpress_src
 
# Путь к файлам индекса
path = /var/db/sphinxsearch/data/wordpress
 
# Тип хранения индекса (none, inline, extern)
docinfo = extern
 
# Отключаем лочку памяти
mlock = 0
 
# Использование английского и русского языка в поисковом потоке
morphology = stem_enru
 
# Минимальная длина индексируемого слова
min_word_len = 2
 
# Используем кодировку UTF-8
charset_type = utf-8
 
# Допустимые символы в поисковом кеше
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
 
enable_star = 1
}

Для каждого источника, нужно будет описать свой индекс, ну и понятно сам источник. Некоторые создают поиск по комментариям, но мне кажется это перебор.
Теперь общие настройки, непосредственно индексатора и поисковика:

 
indexer
{
# Лимит используемой памяти
mem_limit = 32M
}
 
searchd
{
# Описываем, где поисковик будет принимать запросы
address = 127.0.0.1
port = 9312
 
# Лог работы
log = /var/log/sphinxsearch/searchd.log
 
# Лог запросов
query_log = /var/log/sphinxsearch/sphinx-query.log
 
# Время чтения данных.
read_timeout = 5
 
# Максимальное кол-во обслуживающих подпроцессов
max_children = 30
 
# Путь к pidу
pid_file = /var/run/sphinxsearch/searchd.pid
 
# Максимальное кол-во результатов
max_matches = 1000
}

Остается чуть-чуть. Остается запустить поисковик, ну и сначала разрешить запуск:

echo 'sphinxsearch_enable="YES"' >>/etc/rc.conf
/usr/local/etc/rc.d/sphinxsearch start

И настроить работу индексатора. Индексатор запускается через крон. Как и насколько часто его запускать, зависит только от самого сайта. То есть, если сайт обнавляется раз в неделю, запускать индексатор раз в 5 минут безсмысленно. Опять же если у вас описано несколько источников, один из которых обновляется часто, запускать индексатор на все источники безсмысленно.
Поэтому для первого запуска индексатора используем:

indexer --all

И потом в кроне, допустим раз в сутки в 0 часов

0 0 * * * /usr/local/bin/indexer --all --rotate

Если нужно индексировать отдельный соурс, то это выглядит так:

*/5 * * * * /usr/local/bin/indexer --rotate wordpress_idx

Ну в общем, остается прикрутить поисковую форму к сайту, на wordpress это просто установкой и настройкой плугина.

 

 

 Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/
 


В избранное