【发布时间】:2013-09-06 14:30:51
【问题描述】:
我有一个网站,其中包含销售手机和平板电脑的搜索字段。如果您搜索Blackberry 9900,它不会返回任何结果,因为产品名为Blackberry Bold 9900。如果缺少单词,我需要一个显示相关产品的解决方案。
我试过了:
$words=explode("_",$name);
foreach($words as $word){
$whereClause.= ' product_name LIKE "%'.$word.'%" OR';
}
$whereClause=substr($whereClause,0,-2);
$productQuery='SELECT * FROM products WHERE'.$whereClause.' AND status=1 AND deleted=0 ORDER BY product_order';
如果您搜索Blackberry Bold 9900,则会返回所有包含Blackberry 的结果。 我该如何解决这个问题,以使结果具有相关性?
【问题讨论】:
-
在您的情况下 - 使用
AND而不是OR。正确的解决方案是为此目的使用FULLTEXT索引。 -
而不是像使用mysql的匹配查询
-
类似
SELECT * FROM products WHERE MATCH (product_name) AGAINST ('$words') AND status=1 AND deleted=0 ORDER BY product_order。