MySQL - 改善相关结果(获得可怕的结果)

时间:2017-10-21 12:57:31

标签: php mysql sql search

我想改善我的视频网站的相关结果查询。我在查询中考虑了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)."

我可以做些什么来取得更好的相关结果?我应该创建一组常用词并将其排除吗?

0 个答案:

没有答案