我试图为我的应用程序实现一个简单的搜索引擎。 这就是我所做的:
CREATE FULLTEXT INDEX item_name_other_name_desc_index
ON item (name,other_name,description)
public static function Search($string)
{
$delims = ',.; ';
$word = strtok($string,$delims);
while($word)
{
$result['accepted'][] = $word;
$word = strtok($delims);
}
$string = implode(" ", $result['accepted']);
$sql = 'SELECT item_id,name,other_name,description,price,discounted_price, thumbnail_photo,large_photo
FROM item
WHERE
MATCH(name,other_name,description)
AGAINST(:string)' ;
$parameters = array(':string' => $string);
$result['items'] = DB::GetAll($sql,$parameters);
return $result;
}
这适用于仅搜索单词。任何人都可以建议我如何改进它,如果我想搜索像“Bi”这样的字符串,我将如何继续,这将显示以该字符串开头的结果。(例如Bike ...)
答案 0 :(得分:1)
您可以在布尔模式下使用MySQL全文搜索。 这允许像'Bi *'这样的搜索。您只需将*附加到每个接受的单词并稍稍更改SELECT。
SELECT item_id,name,other_name,description,price,
discounted_price,thumbnail_photo,large_photo
FROM item
WHERE
MATCH(name,other_name,description)
AGAINST(:string IN BOOLEAN MODE)
其中:string填充'Bi *'
答案 1 :(得分:0)
你可以使用像'%'和'_'这样的通配符...例如,像Bi%这样的搜索键将包含自行车以及结果集中以'Bi'开头的任何其他单词....等等...