Default Green Orange
Gemini_13's Blog
Блокнот полезных вещей
Home
    • Карта сайта
    • Обо мне
RSS

Установка Sphinx на Debian 7 (Wheezy)

Linux, Настройка сервера Add comments

Эта заметка будет посвящена очень классному поисковому движку Sphinx. Рассказывать о его прелестях можно долго, но об это уже многое написано в интернете. У нас же сейчас задача его поставить на Debian 7. Это очень легко и комментировать особо нечего, поехали…

Устанавливаем:

# aptitude install sphinxsearch

Создаем файл конфигов:

# nano /etc/sphinxsearch/sphinx.conf

Содержание файла можно взять с примера /etc/sphinxsearch/sphinx.conf.sample и подправить под себя. Там есть и комментарии, и настройки, которых в моем примере нет.

Мой же файл выглядит приблизительно вот так (заточен под движок TorrentPier II):

source torrentpier
{
        type                    = mysql
        sql_host                = localhost
        sql_user                = user
        sql_pass                = pass
        sql_db                  = dbname
        sql_query_pre           = SET NAMES utf8
        sql_query_pre           = SET CHARACTER_SET_RESULTS=utf8
        sql_query_pre           = SET CHARACTER_SET_CLIENT=utf8
}

source topics: torrentpier
{
        sql_query               = \
                SELECT topic_id, forum_id, topic_title \
                FROM bb_topics \
                WHERE topic_id BETWEEN $start AND $end

        sql_query_range         = SELECT MIN(topic_id), MAX(topic_id) FROM bb_topics
        sql_range_step          = 100000

        sql_attr_uint           = forum_id
        sql_ranged_throttle     = 50
        sql_query_info          = SELECT * FROM bb_topics WHERE topic_id = $id
}

source posts: torrentpier
{
        sql_query               = \
                SELECT pt.post_id, pt.post_text, t.topic_title, t.topic_id, t.forum_id \
                FROM bb_posts_text pt \
                        LEFT JOIN bb_topics t on pt.post_id = t.topic_first_post_id \
                WHERE pt.post_id BETWEEN $start AND $end

    sql_query_range         = SELECT MIN(post_id), MAX(post_id) FROM bb_posts_text
    sql_range_step          = 100000

        sql_attr_uint           = topic_id
        sql_attr_uint           = forum_id
        sql_ranged_throttle     = 50
        sql_query_info          = SELECT * FROM bb_posts_text WHERE post_id = $id
}

source users: torrentpier
{
        sql_query               = \
                SELECT user_id, username \
                FROM bb_users \
                WHERE user_id BETWEEN $start AND $end

        sql_query_range         = SELECT 1, MAX(user_id) FROM bb_users
        sql_range_step          = 1000
        sql_query_info          = SELECT * FROM bb_users WHERE user_id = $id
}

index topics
{
        docinfo                 = extern
        morphology              = stem_enru
        charset_type            = utf-8
        charset_table           = 0..9, A..Z->a..z, _, a..z, U+410..U+42C->U+430..U+44C, U+42E..U+42F->U+44E..U+44F, U+430..U+44C, U+44E..U+44F, U+0401->U+0435, U+0451->U+0435, U+042D->U+0435, U+044D->U+0435
        min_prefix_len          = 0
        min_infix_len           = 0
        min_word_len            = 1
        min_stemming_len        = 4
        enable_star             = 1
        phrase_boundary         = :, - , . , $
        phrase_boundary_step    = 1
        html_strip              = 1
        path                    = /home/sitename/sphinx/data/topics
        source                  = topics
}

index posts: topics
{
        path                    = /home/sitename/sphinx/data/posts
        source                  = posts
}

index users: topics
{
        path                    = /home/sitename/sphinx/data/users
        source                  = users
}

indexer
{
        mem_limit               = 256M
}

searchd
{
        listen                  = 127.0.0.1:9312
        log                     = /home/sitename/sphinx/log/searchd.log
        query_log               = /home/sitename/sphinx/log/query.log
        read_timeout            = 5
        max_children            = 50
        max_matches             = 5000
        seamless_rotate         = 1
        preopen_indexes         = 1
        unlink_old              = 1
        pid_file                = /home/sitename/sphinx/log/searchd.pid
}

Когда у нас есть готовый конфиг и мы готовы стартовать, нужно перед этим поправить еще один файл. Включим автозапуск.

# nano /etc/default/sphinxsearch

Выставляем START=yes

Запускаем сфинкса:

# service sphinxsearch start

Если вносились в конфиг изменения, то нужно ребутнуть сервис:

# service sphinxsearch reload

или

# service sphinxsearch restart

Считаю, что reload лучше, ибо в отличие от restart сервис не выключается, а только проверяет новые конфиги. Если в конфигах ошибка, то сервис продолжит работать на старых настройках, но укажет об ошибке. А вот restart сначала «тушит» сервис, а потом запускает его заново, тоесть в случае ошибки в конфигах сервис просто не стартанет.

Теперь финишная прямая — индексация. Напишу несколько вариантов, думаю понятно для чего каждый.
Полная (пере)индексация:

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

Чтобы не переиндексировать каждый раз с нуля нужно использовать —rotate. В таком случае в существующий индекс будет просто добавляться новая инфа.

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

Для автоматической индексации дописываем строку в кронтаб (пример с запуском каждых 5 минут и индексацией всего сайта):

#nano /etc/crontab
*/5 *   * * *   root    indexer --rotate --all > /dev/null 2>&1

Ну вот и всё. Дальше дело за техникой приема инфы 🙂


25 июля, 2013  
Tags: debian, debian 7, sphinx, sphinxsearch, ubuntu, wheezy

2 комментария to “Установка Sphinx на Debian 7 (Wheezy)”

  1. Gemini_13's Blog » Blog Archive Установка Sphinx на FreeBSD 10 » Gemini_13's Blog
    27 апреля, 2014 at 10:14 пп

    […] Так же не забываем добавить в крон. Еще немного инфы по sphinx можно посмотреть в статье Установка Sphinx на Debian 7 (Wheezy). […]


  2. Whale
    22 июля, 2015 at 11:38 пп

    Кратко и лаконично, все по делу, если забыл пару команд, самое-то подсмотреть, спасибо.


Leave a Reply

  • Рубрики

    • FreeBSD (20)
    • Linux (46)
    • MySQL (11)
    • Windows (14)
    • Железо (3)
    • Мои моды к TorrentPier II (16)
    • Настройка сервера (49)
    • Разное (33)
    • Скрипты (30)
  • Свежие записи

    • Поля форм на Yii2: textInput(), passwordInput() и hiddenInput()
    • Поля форм на Yii2: CheckboxList()
    • SpeedTest датацентров Digital Ocean
    • Патчим Gearman на Debian
    • nginx + Apache 2.4 и REMOTE_ADDR (решение проблемы)
    • Создание и подключение swap-файла в Debian
    • Запуск PhpStorm 9 x64 на Windows
    • Рекурсивная замена прав доступа для папок и файлов в Linux
    • VirtualBox 5 + phpVirtualBox на Debian 8.2 (jessie)
    • Обработка сессий PHP с помощью Redis + phpredis на Debian 7.8
  • Ссылки

    • My GitHub
  • Архивы

    • Июнь 2016 (2)
    • Март 2016 (2)
    • Январь 2016 (3)
    • Ноябрь 2015 (2)
    • Август 2015 (1)
    • Февраль 2015 (1)
    • Январь 2015 (7)
    • Октябрь 2014 (1)
    • Июнь 2014 (1)
    • Май 2014 (1)
    • Апрель 2014 (7)
    • Февраль 2014 (9)
    • Январь 2014 (5)
    • Декабрь 2013 (7)
    • Ноябрь 2013 (1)
    • Октябрь 2013 (3)
    • Август 2013 (4)
    • Июль 2013 (4)
    • Июнь 2013 (3)
    • Апрель 2013 (2)
    • Март 2013 (2)
    • Февраль 2013 (6)
    • Январь 2013 (2)
    • Декабрь 2012 (1)
    • Ноябрь 2012 (2)
    • Октябрь 2012 (7)
    • Сентябрь 2012 (22)
Все права защищены © 2013 Gemini_13's Blog
G13.org.ua