понедельник, 19 декабря 2011 г.

Установка Sphinx


Уже должен стоять mysql сервер и клиент.

1) Ubuntu: Качаем пакеты
    sudo apt-get install sphinxsearch

Debian:
    1. устанавливаем все необходимое :
    sudo apt-get install libmysql++-dev libmysqlclient15-dev checkinstall (для поддержки pgsql нужны будут библиотеки devel для pgsql)

    2. далее тянем себе исходники
    wget "http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz"

    3. распаковываем и переходим
    tar zxvf sphinx-0.9.9.tar.gz && cd sphinx-0.9.9

    4. собираем :
    ./configure -with-mysql -without-pgsql (я подключил возможность использования mysql и отключил возможность использования pgsql)
    make

    5. теперь будем создавать deb пакет :

    делаем checkinstall в папке с собранными исходниками ( в процессе нужно будет ответить на ряд вопросов)

    после сборки пакета ставим его через dpkg -i

    PS indexer и остальные нужные скрипты находятся в папке – /usr/local/bin


2) Редактируем конфиг /etc/sphinxsearch/sphinx.conf
# Источник данных для поиска
source users_source
{
    # Тип данных
    # Доступные типы: mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
    type            = mysql

    # Необходимые параметры для подключения к базе данных
    sql_host        = localhost
    sql_user        = root
    sql_pass        = pass
    sql_db            =dbname
    sql_port        = 3306    # опциональный, по умолчанию 3306

    # пред-запрос, выполняется перед выполнением основного запроса на получение данных из базы
    # В нашей базе данные хранятся в UTF-8, чтобы поиск по русским символам работал успешно выполним соответсвующий запрос
    sql_query_pre        = SET NAMES utf8

    # запрос, который получает данные документов для поиска
    # первым полем обязательно должен идти уникальный положительный ID документа
    sql_query        = \
        SELECT user_id, user_id AS u_id, email, firstname, middlename, lastname \
        FROM user                 

        # поля, по которым может идти группировка, фильтрация и сортировка
        sql_attr_uint    = u_id


    # document info query, ONLY for CLI search (ie. testing and debugging)
    # optional, default is empty
    # must contain $id macro and must fetch the document by that id
    sql_query_info        = SELECT * FROM user WHERE user_id=$id
}

# индекс каталога товаров для поиска
index users_index
{
     # Источник данных для индексирования
    source            = users_source

    docinfo           = extern

    # Адрес, где будут хранится данные индекса
    path        = /var/lib/sphinxsearch/data/users

    # Индекс с учетом морфологии
    morphology        = stem_enru

    # Минимальная длина слова для индексации
    min_word_len        = 1

    # Кодировка
    charset_type        = utf-8
}

# поисковый демон (служба)
searchd
{
    # какой порт и какой протокол "слушает" служба
    port          = 9312

    # файл с логами
    log                 = /var/log/sphinxsearch/searchd.log

    # файл с логами поисковых запросов
    query_log        = /var/log/sphinxsearch/query.log

    # PID file, searchd process ID file name
    # mandatory
    pid_file        = /var/run/searchd.pid
}

3) Запускаем индексацию нашей базы
sudo indexer --all

4) Запускаем демона sphinx
searchd

5) Проба поиска
search Andrew

6) Переиндексация
sudo indexer --all --rotate

Комментариев нет:

Отправить комментарий