我正在尝试为我的网站制作搜索引擎。如果我将单个单词输入为foo
或bar
等搜索查询,则效果非常好。问题是当我输入两个或更多单词如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;
答案 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);
希望有所帮助