0

我正在建立一个搜索引擎。当用户在我的引擎中输入他们的搜索时,我的脚本只检查语句中的单词,如果它们匹配关键字......返回结果。但是如果 iPad 被搜索,Apple 因为是更高的排名,在 Apple.com 的 iPad 官方网站之前返回怎么办。我已经开始使用全文搜索,但它仍然有点前卫。有任何想法吗? 

$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}%') ";
}
4

1 回答 1

0

在进行全文搜索时,您不需要在 where 子句中将每个关键字添加到其自己的“匹配”语句中。你可以说Match(title, description, keywords, link) Against ('ipod apple')。它将匹配“反对”部分中的每个单词并相应地对它们进行排名。您还可以进行布尔匹配,您可以使用诸如“+”()之类的关键符号对特定单词进行加权+SomeWord,以使该单词在结果中是必需的,“-”(-SomeWord)使该单词在结果中不允许出现......等等。

于 2012-09-28T17:33:35.310 回答