如何首先显示确切的关键字搜索?

时间:2011-05-28 21:11:20

标签: php mysql search-engine

我制作了一个mysql / php搜索引擎,其中我添加了谷歌网址与关键字谷歌搜索引擎和另一个雅虎网址与关键字雅虎搜索引擎。如果我在搜索框中输入Google搜索引擎,我该如何首先显示Google网址?

这是代码:

//connect to database
  mysql_connect("","","");
  mysql_select_db("");

   //explode out search term
   $search_exploded = explode(" ",$search);

   foreach($search_exploded as $search_each)
   {

        //construct query
    $x++;
    if ($x==1)
     $construct .= "Keywords LIKE '%$search_each%'";
    else
     $construct .= " OR Keywords LIKE '%$search_each%'";

   }

  //echo outconstruct
  $constructx = "SELECT * FROM searchengine WHERE $construct";

  $construct = "SELECT * FROM searchengine WHERE $construct LIMIT $s,$e";
  $run = mysql_query($constructx);

  $foundnum = mysql_num_rows($run);


  $run_two = mysql_query("$construct");

  if ($foundnum==0)
   echo "No results found for <b>$search</b>";
  else

2 个答案:

答案 0 :(得分:2)

这里最好的选择不是使用LIKE,而是使用Mysql的FULLTEXT索引。为此,您需要在要搜索的列上创建FULLTEXT索引。

  

ALTER TABLE searchengine ADD FULLTEXT(关键字);

要查询,请执行以下操作:

  

SELECT * FROM searchengine WHERE MATCH(keywords)AGAINST(“$ searchterm”);

您可以合并不同的MATCH AGAINST查询以满足所有关键字。此外,您可以将MATCH AGAINST位放在查询的SELECT子句中。这将返回一个分数,然后您可以使用该分数对结果进行排名。

此外,您甚至可以在运行查询之前执行一些词干工作。使用各种MATCH运算符生成的分数,您可以将整个单词排在高于词干单词的位置。

答案 1 :(得分:0)

  1. 要查找条目数,您可以使用SELECT count(*)代替mysql_num_rows进行完整查询。
  2. 要对结果进行排序,您需要在查询中使用“ORDER BY”,以及一些字段,这将是排序的标准。在你的情况下,你可以写
    $construct = "SELECT * FROM searchengine WHERE $construct ORDER BY Keywords LIMIT $s,$e ";
  3. 不要忘记清理你的$ search $search = mysql_real_escape_string($search);