Magento使用magento1.4.2以后的版本,在使用前台快速搜索产品时,会发现搜索的数量过多的问题很多, 比如卖手机的网站:以关键字搜索nokia和nokia 5800会得到相同的结果,甚至nokia 5800会得到更多的结果, 实际上他的查找逻辑是所有有nokia或5800的都找出来,用的是每个词间 “或” 的关系, 这在产品较多的网站是不可接受的。 通过代码分析,通过代码分析,magento 1.4.2以后的版本在处理搜索关键字时用OR替换了AND,
他的代码是:
$likeCond = '(' . join(' OR ', $like) . ')';//大概在345行的样子
把OR换回AND 即$likeCond = '(' . join(' OR ', $like) . ')';
这个是用在使用magento后台设置like方式搜索方式$separateCond = ‘ OR ‘; //大概在353行的样子 把OR换回AND 即$separateCond = ‘ AND ‘; 这个是用在使用magento后台设置fulltext方式搜索方式注意,在修改完成后,试一下搜索结果,有可能还会有意料外的产品出现,这时如5800不在产品名称中,这时5800有可能定义在充许快速搜索的属性中。 不知为什么magento没有在后台设置搜索的or和and的选项! magento 1.6以上的,文件改成在 app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php 中了. (责任编辑:最模板) |