PHP:试图为我的网站制作搜索引擎

时间:2013-06-11 16:37:06

标签: php search-engine

我正在尝试为我的网站制作搜索引擎。如果我将单个单词输入为foobar等搜索查询,则效果非常好。问题是当我输入两个或更多单词如foo bar时失败。

我该如何处理这些话?拆分单词(使用explode),然后在表格中查找索引单词的每个单词?这听起来不是一个好主意

我正在为此搜索引擎使用GET方法。

<?php
if($_GET['query']){
    $search = $_GET['query'];
    $search = strip_tags($search);
    $search = trim($search);
    $search = addslashes( strtolower($search));

echo $search;
$start = microtime();
$searchquery = mysql_query("SELECT sw_wordid FROM tbl_search_word WHERE sw_word LIKE '%$search%'");
                               //tbl_search_word contains all the indexed words

$searchrow = mysql_fetch_array($searchquery);   
$end = microtime();

echo $searchrow['sw_wordid'].'<br />';
echo $end - $start;
}

&GT;

2 个答案:

答案 0 :(得分:1)

首先,我同意Hanky Panky分享它本身并不是一个不错的选择,你可以试试,但由于没有其他人帮助你替代其他我给你一个,它在搜索很多关键词时效果不是很好并取决于你想要的结果。

首先,我请求你正确地对你的输入进行正确的调整。不要只是将用户提供的内容放在字符串中,就像你发布的代码一样,从不这样做,你可能会为sql inyection打开一个安全漏洞。 使用PDO或mysqli尝试使用prpared语句。

你可以试试这个:

$searchquery = mysql_query("
SELECT sw_wordid FROM tbl_search_word WHERE INSTR(sw_word,'$search')>0
");

您可以分享您的基准,以帮助您改进它,但不知道您想要的结果,您选择的替代方案可能取决于它。

请分享您的结果。 希望这会对你有所帮助。

答案 1 :(得分:-1)

我猜你输入的空格是%20,所以发生错误的原因是为什么不使用str_replace(“%20”,“”,$ query);

希望有所帮助