Проблема с Sphinx search

Автор crazyASD, 29 апреля 2013, 18:01:56

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

crazyASD

Установил мод Sphinx search, установил на севере Sphinx, всё сконфигурировал, сделал индексы, настроил их обновление.
После установки натыкаюсь на такую ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
AND ID_MEMBER = 64
GROUP BY ID_TOPIC
LIMIT 1' at line 3
File: /***/www/Sources/Search.php
Line: 1572

Ошибка возникает в этом запросе:

        // If we want to know who participated in what then load this now.
        if (!empty($modSettings['enableParticipation']) && !$user_info['is_guest'])
        {
            $result = db_query("
                SELECT ID_TOPIC
                FROM {$db_prefix}messages
                WHERE ID_TOPIC IN (" . implode(', ', array_keys($participants)) . ")
                    AND ID_MEMBER = $ID_MEMBER
                GROUP BY ID_TOPIC
                LIMIT " . count($participants), __FILE__, __LINE__);
            while ($row = mysql_fetch_assoc($result))
                $participants[$row['ID_TOPIC']] = true;
            mysql_free_result($result);
        }

Запрос в отладке выглядит как:
SELECT ID_TOPIC
                FROM forum_messages
                WHERE ID_TOPIC IN () - пустой array
                AND ID_MEMBER = 64
                GROUP BY ID_TOPIC
                LIMIT 1

Если код в Search.php закомментировать, то поиск работает, отлично ищет, но некорректно формирует ссылку на топик, и не показывает процент совпадения.
Подозреваю, ошибка возникает в запросе:
    // *** Retrieve the results to be shown on the page

    $participants = array();
    $request = db_query("
        SELECT " . (empty($search_params['topic']) ? 'lsr.ID_TOPIC' : $search_params['topic'] . ' AS ID_TOPIC') . ", lsr.ID_MSG, lsr.relevance, lsr.num_matches
        FROM ({$db_prefix}log_search_results AS lsr" . ($search_params['sort'] == 'numReplies' ? ", {$db_prefix}topics AS t" : '') . ")
        WHERE ID_SEARCH = " . $_SESSION['search_cache']['ID_SEARCH'] . ($search_params['sort'] == 'numReplies' ? "
        AND t.ID_TOPIC = lsr.ID_TOPIC" : '') . "
        ORDER BY $search_params[sort] $search_params[sort_dir]
        LIMIT " . (int) $_REQUEST['start'] . ", $modSettings[search_results_per_page]", __FILE__, __LINE__);
    while ($row = mysql_fetch_assoc($request))
    {
        $context['topics'][$row['ID_MSG']] = array(
            'id' => $row['ID_TOPIC'],
            'relevance' => round($row['relevance'] / 10, 1) . '%',
            'num_matches' => $row['num_matches'],
            'matches' => array(),
        );
        // By default they didn't participate in the topic!
        $participants[$row['ID_TOPIC']] = false;
    }
    mysql_free_result($request);

Сам уже всю голову сломал, не могу понять где возникает ошибка.
Сон разума порождает монстров
Wordpress - рулит!  SMF 2.0.11