2013-06-11 94 views
0

我想爲我的網站做一個搜索引擎。如果我輸入一個單詞作爲搜索查詢(如foobar),它會很好用。當我輸入兩個或更多的詞如foo bar時,問題是失敗的。PHP:試圖爲我的網站做一個搜索引擎

我應該如何處理這些詞?拆分單詞(使用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; 
} 

?>

+0

你使用get?張貼?或者是其他東西? –

+3

我會建議尋找像Zend_Search_Lucene – Orangepill

+0

@RickyMason我正在使用GET –

回答

1

首先,我同意手帕Panky分裂它本身不是一個壞的選擇,你可以嘗試,但沒有人幫你與其他一些替代我給你一個更多的是,當搜索很多關鍵字並取決於你想要的結果時,它並不那麼有效。

首先,我懇求你正確地對你的輸入進行適當的修改,不要把用戶給你的字符串像你發佈的代碼一樣,永遠不要這樣做,你可能會打開sql inyection的安全漏洞。 使用PDO或mysqli嘗試準備好的統計信息。

你可以試試這個:

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

而且你可以使用你的分享標杆,以幫助您改善它,但不知道你想要的結果,你選擇的替代方案可以依賴於它到底是什麼。

請分享您的結果。 希望這可以幫助你。

+0

謝謝你的回答。我會試試這個。 –

+0

好吧,讓我們知道這是如何工作的,你很高興幫助 – sandino

-1

我猜你輸入的空間是%20,所以出現錯誤爲什麼不使用str_replace(「%20」,「」,$ query);

希望它有幫助