2012-09-28 68 views
0

我正在構建搜索引擎。當用戶將搜索輸入到我的引擎中時,我的腳本只會真正檢查語句中的單詞,如果它們與關鍵字匹配,則返回結果。但是,如果iPad被搜索和蘋果,因爲是更高的級別,在蘋果官方iPad網站之前返回。我已經開始使用全文搜索,但它仍然有點前衛。有任何想法嗎?檢測MYsql表中的單詞數量

$query = " SELECT * FROM scan WHERE "; 

$terms = array_map('mysql_real_escape_string', $terms); 
$i = 0;  
foreach ($terms as $each) { 
    if ($i++ !== 0){ 
     $query .= " AND ";  
    } 
    $query .= "Match(title, description, keywords, link) Against ('%{$each}%') "; 
} 

回答

0

在進行全文搜索時,不需要將每個關鍵字都添加到where語句中自己的「匹配」語句中。你可以說Match(title, description, keywords, link) Against ('ipod apple')。它會對「反對」部分中的每個單詞進行匹配並對其進行排名。您也可以做boolean matches,您可以使用鍵符號(如「+」(+SomeWord))爲特定單詞加權,以便在結果中使用該單詞,「 - 」(-SomeWord)用於在結果中不允許該單詞等。

+0

你有任何代碼可以用來查看你的意思嗎?或者拿我的代碼並編輯它的工作 –

+0

使用'反對('「.implode('',$ terms)。」'')' –

+0

不起作用,會是一個函數,它計算單詞的次數出現在指定的領域,然後返回更高的順序 –