PHP:尝试为我的网站创建搜索引擎

PHP:尝试为我的网站创建搜索引擎,php,search-engine,Php,Search Engine,我正在尝试为我的网站做一个搜索引擎。如果我输入一个单词作为搜索查询,比如foo或bar,效果非常好。问题是,当我输入两个或多个单词(如foobar)时,它会失败 我该如何处理这些话?拆分单词(使用分解),然后在表中查找每个单词以查找索引单词?这听起来不是个好主意 我正在为这个搜索引擎使用GET方法 <?php if($_GET['query']){ $search = $_GET['query']; $search = strip_tags($search); $s

我正在尝试为我的网站做一个搜索引擎。如果我输入一个单词作为搜索查询,比如
foo
bar
,效果非常好。问题是,当我输入两个或多个单词(如
foobar
)时,它会失败

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

我正在为这个搜索引擎使用
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;
}

首先,我同意Hanky-Panky分割法,它本身并不是一个坏的选择,您可以尝试一下,但由于没有其他人帮助您进行其他选择,我再给您一个选择,它在搜索多个关键字时并不那么有效,这取决于您想要的结果

首先,我请求你正确地对你的输入进行适当的santinize不要像你发布的代码那样把用户给你的东西放在字符串中,永远不要这样做,你可能会为sql inyection打开一个安全漏洞。 尝试使用PDO或mysqli进行预处理

你能试试这个吗

$searchquery = mysql_query("
SELECT sw_wordid FROM tbl_search_word WHERE INSTR(sw_word,'$search')>0
");
您可以与use共享您的基准测试,以帮助您改进它,但不知道您想要的结果是什么,您选择的替代方案可能取决于它

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

我猜您输入的空间被视为%20,因此出现了一个错误,为什么不使用str_replace(“%20”,”,“,$query”)


希望有帮助

您正在使用get吗?邮递或者别的什么?我建议调查Zend_Search之类的东西_Lucene@RickyMason我使用的是GETwell,您的代码是什么样子的?
拆分单词(使用explode),然后在表中查找每个单词以查找索引单词?这听起来不是个好主意
为什么不呢?无论如何,你必须把他们分开,才能找到他们中的任何一个谢谢你的回答。我试试这个。