搜索表中的关键字

时间:2012-10-09 12:11:36

标签: php mysql sql full-text-search

我有一个基本上包含视频搜索引擎的网站,我有以下代码,它将根据给定的输入条件查询mysql:

$search=htmlspecialchars($_GET['load']); 
$say=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE)"); 

然后我有以下代码显示结果:

     $katala=mysql_query("SELECT * FROM madvideo WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE) order by id asc limit $s,$perpage");
            $i=0;
                    while ($sea=mysql_fetch_array($katala))  { 
            $i++;

$idd=$sea['id']; $seoo=$sea['seo']; $baslikk=$sea['baslik']; $resimm=$sea['resim']; $suree=$sea['sure'];
 $izlenmee=$sea['izlenme']; $tarihh=$sea['tarih']; $katt=$sea['kat'];

让我试着解释一下这有什么问题。 让我们说你在我的网站上搜索“我喜欢吃草莓”

让我们假设我在mysql表上有一个名字“我喜欢吃草莓”的条目

使用我当前的代码,我将得到以下示例结果:

“我喜欢开我的车” “我的车速度超快” “他们吃多了” 等等,相关的结果可能会出现,但最初并不像我希望的那样。

如何让它以更相关的方式显示结果,例如google?

1 个答案:

答案 0 :(得分:2)

将搜索词分解为单词,以便您可以使用like表达式动态地按条件构建顺序。由于mysql中的逻辑表达式的结果是1或0,因此可以添加这些表达式。

SELECT * 
FROM madvideo 
WHERE MATCH (baslik) AGAINST ('*$search*' IN BOOLEAN MODE) 
order by 
    (baslik like '%$word1%') 
    + (baslik like '%word2%')
    + (baslik like '%word3%')
    desc
limit $s,$perpage