我想改善我的视频网站的相关结果查询。我在查询中考虑了3个元素;标题,描述和标签。
我在视频中得到了非常奇怪且不相关的结果。另一方面,当我在某些视频系列中得到正确的结果时,顺序是完全错误的。
错误结果的示例
Video : sometext funny video
Expected : sometext2 funny video, sometext3 funny video, sometext funny
sometext video. (AVAILABLE ON SYSTEM & DB)
Result : some-non-related-text1, some-non-related-text2 .. after 8-9 result
sometext2 funny video... etc
正确结果但错误顺序的示例;
X Movie Ep 1
X Movie Ep 15
X Movie Ep 2
X Movie Ep 33
X Movie Ep 46
X Movie Ep 5
我如何获得$key
值;
$pieces = array_filter(explode(" ", str_replace(array('(',')') , '', $video->title)));
$pieces2 = array_filter(explode(",", str_replace(array('(',')') , '', $video->tags)));
$pieces = array_merge($pieces, $pieces2);
$par = array();
$par[] = str_replace(array('(',')') , '', $video->title);
foreach($pieces as $p){
if (strlen($p) > 2) {
if (strlen($p) < 4) {
$par[] = $p . '*';
}else{
$par[] = $p;
}
}
}
$key = toDb(implode(",", $par));
我的查询;
SELECT
". $ options.",
".DB_PREFIX."users.name,
MATCH (title, description, tags) AGAINST ('".$key."' IN BOOLEAN MODE) AS relevance,
MATCH (title) AGAINST ('".$key."' IN BOOLEAN MODE) AS title_relevance
FROM
".DB_PREFIX."videos
LEFT JOIN
".DB_PREFIX."users
ON ".DB_PREFIX."videos.user_id = ".DB_PREFIX."users.id
WHERE
MATCH (title, description, tags) AGAINST('".$key."' IN BOOLEAN MODE)
AND ".DB_PREFIX."videos.pub > 0
ORDER by
title_relevance DESC,
relevance DESC limit 1,
".get_option('related-nr', 12)."
我可以做些什么来取得更好的相关结果?我应该创建一组常用词并将其排除吗?