sphinx.conf под LiveStreet 0.4

Для тех, кто уже начал обживать свои проекты на ЛайвСтрит 0.4 наверняка вылезла проблема отсутствия конфигурационного файла для поисквого бота сфинкс — пожалуйста!
## Конфигурационный файл Sphinx-а для индексации LiveStreet

#######################
#
# Описываем индексы
#
#######################

# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа
# к базе данных сайта
source lsParentSource
{
        type            = mysql
        sql_host        = localhost
        sql_user        = user
        sql_pass        = password
        sql_db          = social
        sql_port        = 3306
        # Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы
        # операции с БД происходили не через TCP/IP стек сервера)
        sql_sock        = /var/run/mysqld/mysqld.sock
   
       
        mysql_connect_flags     = 32 # 32- включение сжатие при обмене данными с БД
   
        # Включам нужную кодировку соединения и выключаем кеш запросов
        sql_query_pre                   = SET NAMES utf8
        sql_query_pre                   = SET SESSION query_cache_type=OFF    
}

# Источник топиков
source topicsSource : lsParentSource
{
        # запрос на получения данных топиков
        sql_query               = \
                SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
                tc.topic_text, t_fast.topic_publish \
                FROM prefix_topic as t_fast, prefix_topic_content AS tc \
                WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end

        # запрос для дробления получения топиков на неколько итераций
        sql_query_range         = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
       
        # сколько получать объектов за итерацию
        sql_range_step          = 1000

       
        # Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
        sql_attr_uint = topic_publish

        # Атрибут даты добавления, типа "время"
        sql_attr_timestamp      = topic_date_add

        # мульти-аттрибут "теги топика"
        sql_attr_multi  = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag

        sql_ranged_throttle     = 0
}

# Источник комментариев
source commentsSource : lsParentSource
{
        sql_query               = \
                        SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_comment \
                       WHERE target_type='topic' AND comment_id>=$start AND comment_id<=$end

        sql_query_range         = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_comment
        sql_range_step          = 5000

        sql_attr_uint = comment_delete
        sql_attr_timestamp      = comment_date
}

#######################
#
# Описываем индексы
#
#######################

index topicsIndex
{
        # Источник, который будет хранить данный индекса
        source                  = topicsSource
        path                    = /var/lib/data/topicIndex

        # Тип хранения аттрибутов
        docinfo                 = extern

        mlock                   = 0

        # Используемые морфологические движки
        morphology = stem_enru

        # Кодировака данных из источника    
        charset_type            = utf-8


        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
        html_remove_elements = style, script, code
}

# Индекс комментариев
index commentsIndex
{
        source                  = commentsSource
        path                    = /var/lib/data/commentsIndex

        docinfo                 = extern

        mlock                   = 0

        morphology = stem_enru

        charset_type            = utf-8
        
        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
        html_remove_elements = style, script, code
}

#######################
#
# Настройки индексатора
#
#######################


indexer
{
        # Лимит памяти, который может использавать демон-индексатор
        mem_limit                       = 32M
}

#######################
#
# Настройка демона-поисковика
#
#######################

searchd
{
        # Адрес, на котором будет прослушиваться порт
		listen                         = 127.0.0.1:3312


        # Ну и собственно номер порта демона searchd
        # port                            = 3312

        # Лог-файл демона
        log                                     = /var/log/sphinx/searchd.log

        # Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
        query_log                       = /var/log/sphinx/query.log

        # Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
        read_timeout            = 5

        # Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
        max_children            = 30

        # Файл, в который сохраняется PID-процесса при запуске
        pid_file                        = /var/log/sphinx/searchd.pid
}


Конфиг файл для новой версии Sphinx 0.9.9-release

12 комментариев

avatar
большое спасибо — очень нужно!
avatar
Я новенький, перерыр полсайта — не могу найти откуда слить ЛайвСтрит 0.4. Поделитесь информацией, заранее благодарю!
avatar
Релиза версии 0.4 пока еще нет, пока еще в тестовом режиме, в скором времени можно будет скачать.
Имеется возможность для скачивания svn версии (если вас это интересует), а вообще о том где скачать читать на странице livestreet.ru/page/download
avatar
Спасибо огромное, но в запрос комментов
SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_comment \
                        WHERE comment_id>=$start AND comment_id<=$end

в условия WHERE надо добавить target_type='topic'

т.к. иначе будет искаться в том числе и по личным сообщениям (что само по себе очень стремно) и в случае найденного, т.к. у объекта Talk нет метода getBlog(), будет ругаться на это (или не будет, если вывод ошибок отключен, но всеравно поиск по комментам работать не будет).

Вообщем, запрос должен быть такой:
SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_comment \
                        WHERE target_type='topic' AND comment_id>=$start AND comment_id<=$end
avatar
исправлено, спасибо!
avatar
возможно, я ламер, но объясните пожалуйста.
чтобы этот sphinx работал
какие файлы и куда нужно загрузить на сайте?
avatar
Поставил sphinx с этим конфигом, на сайте под 0.4.2 поиск работает. Добавил в этот конфиг для другого сайта на версии 0.3.1 такое:

source site2_lsParentSource
{
        type            = mysql
        sql_host        = localhost
        sql_user        = xxxxxxx
        sql_pass        = xxxxxxx
        sql_db          = xxxxxxx
        sql_port        = 3306
        # Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы
        # операции с БД происходили не через TCP/IP стек сервера)
        sql_sock        = /var/run/mysqld/mysqld.sock
   
       
        mysql_connect_flags     = 32 # 32- включение сжатие при обмене данными с БД
   
        # Включам нужную кодировку соединения и выключаем кеш запросов
        sql_query_pre                   = SET NAMES utf8
        sql_query_pre                   = SET SESSION query_cache_type=OFF    
}

# Источник топиков
source site2_topicsSource : site2_lsParentSource
{
        # запрос на получения данных топиков
        sql_query               = \
                SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
                tc.topic_text, t_fast.topic_publish \
                FROM prefix_topic as t_fast, prefix_topic_content AS tc \
                WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end

        # запрос для дробления получения топиков на неколько итераций
        sql_query_range         = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
        
        # сколько получать объектов за итерацию
        sql_range_step          = 1000

        
        # Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
        sql_attr_bool           = topic_publish

        # Атрибут даты добавления, типа "время"
        sql_attr_timestamp      = topic_date_add

        # мульти-аттрибут "теги топика"
        sql_attr_multi  = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag

        sql_ranged_throttle     = 0
}

# Источник комментариев
source site2_commentsSource : site2_lsParentSource
{
        sql_query               = \
                        SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_topic_comment \
                        WHERE comment_id>=$start AND comment_id<=$end

        sql_query_range         = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_topic_comment
        sql_range_step          = 5000

        sql_attr_bool           = comment_delete
        sql_attr_timestamp      = comment_date
}

#######################
#
# Описываем индексы
#
#######################

index site2_topicsIndex
{
        # Источник, который будет хранить данный индекса
        source                  = topicsSource
        path                    = /usr/local/SphinxIndex/topicsSource

        # Тип хранения аттрибутов
        docinfo                 = extern

        mlock                   = 0

        # Используемые морфологические движки
        morphology              = stem_enru, soundex, metaphone

        # Кодировака данных из источника        
        charset_type            = utf-8


        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
}

# Индекс комментариев
index site2_commentsIndex
{
        source                  = commentsSource
        path                    = /usr/local/SphinxIndex/commentsSource

        docinfo                 = extern

        mlock                   = 0

        morphology              = stem_enru, soundex, metaphone

        charset_type            = utf-8
}


Под 0.3.1 не пашет, префикс в настройках поиска LS site2_ прописал, изменения для Sphinx.class.php для версии 0.9.9 внес… но чего то не хватает… Подскажите куда копнуть люди. Обновить тот сайт до 0.4.2 к сожалению не могу. Где то у меня ошибка, подскажите пожалуйста кто разбирается.
avatar
Народ, ну неужели никто из сообщества никогда не настраивал sphinx для более чем одного сайта? В интернете искал — ничего не нашел на эту тему, здесь сделал вроде все как советовали тут livestreet.ru/blog/dev_documentation/366.html#comment57556 но не работает почему то… В консоли запускаю, вроде все работает и индексируется…

ptzonline:~#  /usr/local/bin/indexer --all --rotate
Sphinx 0.9.9-release (r2117)
Copyright © 2001-2009, Andrew Aksyonoff

using config file '/usr/local/etc/sphinx.conf'...
indexing index 'multi_topicsIndex'...
collected 19 docs, 0.0 MB
collected 53 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.0 Mhits, 100.0% done
total 19 docs, 30722 bytes
total 0.012 sec, 2465847 bytes/sec, 1525.00 docs/sec
indexing index 'multi_commentsIndex'...
collected 8 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 8 docs, 552 bytes
total 0.001 sec, 308552 bytes/sec, 4471.77 docs/sec
indexing index 'ptz_topicsIndex'...
collected 1009 docs, 2.6 MB
collected 2822 attr values
sorted 0.0 Mvalues, 100.0% done
sorted 0.2 Mhits, 100.0% done
total 1009 docs, 2565366 bytes
total 1.110 sec, 2310676 bytes/sec, 908.82 docs/sec
indexing index 'ptz_commentsIndex'...
collected 124 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 124 docs, 39726 bytes
total 0.027 sec, 1458691 bytes/sec, 4553.13 docs/sec
total 10 reads, 0.000 sec, 94.2 kb/call avg, 0.0 msec/call avg
total 32 writes, 0.004 sec, 72.4 kb/call avg, 0.1 msec/call avg
rotating indices: succesfully sent SIGHUP to searchd (pid=32617).


но на сайте с LS 0.3.1 выдает Удивительно, но поиск не дал результатов. Помогите светлые головы, что не так делаю?
avatar
«site2_» — это префикс прописан в конфиге модуля? trac.lsdev.ru/livestreet/browser/tags/0.3.1/config/modules/search/config.php#L21
avatar
Да, на сайтах прописаны разные префиксы в конфигах модуля поиска, для мультиблога так
define('SEARCH_ENTITY_PREFIX','multi_');

для ptzonline так
define('SEARCH_ENTITY_PREFIX','ptz_');

site2_ — это я просто для примера написал.
Максим, можно я сюда весь свой sphinx.conf напишу? Может поможет кто настроить…
avatar
Возвращаюсь к вопросу, может кто нибудь решал подобное?
avatar
можно поподробнее, про переменные $start и $end в SQL запросах? как они получают данные?

и 2 sql как я понимаю нужны, чтобы по отдельности получать данные при необходимости из источника топиков или комментов. Ткните носом методы пожалуйста, в которых это устанавливается.
  • 3371
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.