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

Тема в разделе "Архив багтрекера", создана пользователем druid, 5 сен 2011.

Статус темы:
Закрыта.
  1. druid

    druid Пользователь

    Сообщения:
    206
    Симпатии:
    119
    В-общем, есть серьезный баг с поиском в 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, но туда пока руки не добрались
     
    PheRum и Lion18 нравится это.
  2. starfolk

    starfolk Пользователь

    Сообщения:
    23
    Симпатии:
    0
    спасибо, исправим ручками)
     
  3. Lion18

    Lion18 Пользователь

    Сообщения:
    354
    Симпатии:
    14
    Благодарю. Нужная вещь.
     
  4. nord51

    nord51 Пользователь

    Сообщения:
    259
    Симпатии:
    35
    Версия TP:
    2.2.1
    druid, спасибо! Обязательно поправим.
     
  5. frank

    frank Гость

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

    druid Пользователь

    Сообщения:
    206
    Симпатии:
    119
    в смысле?
    --- добавлено: Sep 5, 2011 2:25 PM ---
    в том виде, в каком сейчас работает поиск - это сделать крайне сложно, ибо поиск в два этапа придется объединять в один этап
    так что пока довольствуемся тем, что имеем ;-)
     
  7. _Xz_

    _Xz_ Пользователь

    Сообщения:
    370
    Симпатии:
    236
    Версия TP:
    иная
    омг... вы запросы то видели?

    и на счёт бага, всё уже исправлено в СВН, не стоит придумывать велосипед
     
Статус темы:
Закрыта.

Поделиться этой страницей