L
ler
Гость
Очень неточно выдает похожие релизы. Есть такие, у которых отличие в названии в одну цифру, но он вместо них выдает черт знает что. Надо прикрутить алгоритм шинглов
$title = (strlen($topic_title) > 10) ? (substr($topic_title, 0, 10) . '') : $topic_title;
$sgl_search = "t.topic_title LIKE '%" . addslashes($title) . "%'";
$search_bool_mode = ($bb_cfg['allow_search_in_bool_mode']) ? ' IN BOOLEAN MODE' : '';
$title = preg_replace("#([^-A-Za-zА-Яа-яёЁ_!'&\$@%\s\*\.]*)#i", '', $topic_title); // оставляем то что нужно в титле
$title = smart_cut($title, 2); // режем титл до 2х слов
$sgl_search = "MATCH (t.topic_title) AGAINST ('". addslashes($title) ."'$search_bool_mode)";
$porno_forum = ($bb_cfg['porno_forums']) ? $bb_cfg['porno_forums'] : '0';
$trash_forum = ($bb_cfg['trash_forum_id']) ? $bb_cfg['trash_forum_id'] : '0';
//
$search_in = (isset($porno_forums[$forum_id])) ? 'AND f.forum_id IN ('.$porno_forum.') AND f.forum_id NOT IN ('.$trash_forum.') ' : 'AND f.forum_id NOT IN ('.$porno_forum.') AND f.forum_id NOT IN ('.$trash_forum.') '; // ищем порнуху в порнухе и наоборот
AND f.forum_id NOT IN ('.$porno_forum.')
$search_in
function smart_cut($text, $words = 3) {
$match = array();
$r = preg_match("/^[^\s]+([\s]+[^\s]+){0,".($words-1)."}/", $text, $match);
if ($r)
return $match[0];
return '';
}
$topic_url = '<a title="'.$similar[$i]['topic_title'].'" href="viewtopic.php?'. POST_TOPIC_URL .'='. $similar[$i]['topic_id'].'">'. $title . '</a>';
$poster_url = "profile.php?mode=viewprofile&". POST_USERS_URL .'='. $similar[$i]['user_id'];
$similar[$i]['username'] = wbr($similar[$i]['username']);
$poster_username = '<a class="genmed" href="'. $poster_url .'">'. $similar[$i]['username'] .'</a>';
$forum_url = "viewforum.php?f=". $similar[$i]['forum_id'];
// Похожие темы НАЧАЛО
if ($t_data['allow_reg_tracker'])
{
//$title = (strlen($topic_title) > 10) ? (substr($topic_title, 0, 10) . '') : $topic_title;
$title = preg_replace("#([^-A-Za-zйцукенгшщзхъфывапролджэячсмитьбюйЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёЁ\s]*)#i", '', $topic_title); // оставляем то что нужно в титле
$title = preg_replace('|-+|', ' ', $title);
$title = smart_cut($title, 4); // режем титл до 4х слов
$title = preg_replace('| +|', '%', $title); // заменяем все повторяющиеся и одиночные пробелы на знак %
$sgl_search = "t.topic_title LIKE '%" . addslashes($title) . "%'";
//$sgl_search = "t.topic_title LIKE '" . addslashes($title) . "%'";
$title=str_replace('&','',$title);
//$porno_forums = $bb_cfg['porno_forums'] ? $bb_cfg['porno_forums'] : '1';
// $trash_forums = $bb_cfg['trash_forum_id'] ? $bb_cfg['trash_forum_id'] : '0';
$sql = "SELECT t.*, u.user_id, u.username, f.forum_id, f.forum_name, tor.size
FROM ". BB_TOPICS ." t, ". BB_USERS ." u, ". BB_FORUMS ." f, ". BB_BT_TORRENTS ." tor
WHERE t.topic_id != $topic_id
AND tor.topic_id = t.topic_id
AND $sgl_search
AND f.allow_reg_tracker = 1
AND t.forum_id = f.forum_id
AND t.topic_poster = u.user_id
GROUP BY t.topic_title LIMIT 10";
//echo "<div style='display:none'>";
//var_dump($sql);
//echo "</div>";
string(545) "SELECT t.*, u.user_id, u.username, f.forum_id, f.forum_name, tor.size
FROM bb_topics t, bb_users u, bb_forums f, bb_bt_torrents tor
WHERE t.topic_id != 1616
AND tor.topic_id = t.topic_id
AND t.topic_title LIKE '%Предложение%которое%нам%нужно%найти%'
AND f.allow_reg_tracker = 1
AND t.forum_id = f.forum_id
AND t.topic_poster = u.user_id
GROUP BY t.topic_title LIMIT 10"