Баг с поиском в tracker.php

Статус
В этой теме нельзя размещать новые ответы.

druid

Пользователь
#1
В-общем, есть серьезный баг с поиском в tracker.php. Поскольку админы не хотят исправлять её в SVN, напишу сюда, чтобы общественность сама исправила ручками.

Описание: Поиск в tracker.php реализован след.образом - по искомому слово ищутся номера топиков (через mysql/sphinx), затем по этим топикам уже собирается запрос получения трекерных данных (сиды,личы и т.д.)
Но этот самый поиск ограничен лимитом, поэтому в список топиков при поиске распространенного слова (у меня это было слово Repack) будут попадать не все релизы, а поскольку при поиске топиков нет никакой сортировки, то в список найденных релизов могут не попасть даже свежие топики.

Исправление:
находим функцию get_title_match_topics в файле includes/functions.php
в ней

находим
PHP:
$sphinx->SetLimits(0, $limit, $limit, $limit);
заменяем на
PHP:
$row = DB()->fetch_row("SELECT COUNT(*) as count FROM ". BB_TOPICS);
$sphinx->SetLimits(0, $row['count']-1, $row['count']-1, $row['count']-1);
находим
PHP:
           $sql = "SELECT topic_id FROM ". BB_TOPICS ."
                    WHERE MATCH (topic_title) AGAINST ('$title_match_sql'$search_bool_mode)
                    $where_forum
                    LIMIT $limit";
меняем на
PHP:
            $sql = "SELECT topic_id FROM ". BB_TOPICS ."
                    WHERE MATCH (topic_title) AGAINST ('$title_match_sql'$search_bool_mode)
                    $where_forum";
                //LIMIT $limit";
находим
PHP:
            $sql = "SELECT p.post_id FROM ". BB_POSTS ." p, ". BB_POSTS_SEARCH ." ps
                WHERE ps.post_id = p.post_id
                    AND MATCH (ps.search_words) AGAINST ('$title_match_sql'$search_bool_mode)
                    $where_forum
                LIMIT $limit";
меняем на
PHP:
            $sql = "SELECT p.post_id FROM ". BB_POSTS ." p, ". BB_POSTS_SEARCH ." ps
                WHERE ps.post_id = p.post_id
                    AND MATCH (ps.search_words) AGAINST ('$title_match_sql'$search_bool_mode)
                    $where_forum";
                //LIMIT $limit";
скорее всего такая же ситуация в search.php, но туда пока руки не добрались
 
F

frank

Гость
#5
ограничивать выдаваемые результаты поиска всё-равно надо, иначе будет существенная нагрузка на более-менее крупных сайтах.
кстати, сделайте наконец индексацию трекерного поиска или полностью объедините его с форумным
 

druid

Пользователь
#6
индексацию трекерного поиска
в смысле?
--- добавлено: Sep 5, 2011 2:25 PM ---
ограничивать выдаваемые результаты поиска всё-равно надо
в том виде, в каком сейчас работает поиск - это сделать крайне сложно, ибо поиск в два этапа придется объединять в один этап
так что пока довольствуемся тем, что имеем ;-)
 

_Xz_

Пользователь
#7
омг... вы запросы то видели?

и на счёт бага, всё уже исправлено в СВН, не стоит придумывать велосипед
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху