我正在构建一个搜索引擎。当用户在我的引擎中键入他们的搜索时,我的脚本只会检查语句中的单词,如果它们与关键字匹配...则返回结果。但是,如果搜索到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}%') ";
}
答案 0 :(得分:0)
在进行全文搜索时,您无需在where子句中将每个关键字添加到自己的“匹配”语句中。你可以说Match(title, description, keywords, link) Against ('ipod apple')
。它将对“反对”部分中的每个单词进行匹配,并相应地对它们进行排名。您也可以boolean matches使用“+”(+SomeWord
)等关键符号对特定单词进行加权,以便在结果中使用该单词,“ - ”(-SomeWord
)进行制作结果中不允许使用该词......等等。