Magento网站前台搜索机制比较奇葩的一点是搜索条件为“Or”而不是“And”。举个例子,如果我在网站上搜索 Men Shoes,我其实是设置了两个搜索条件,一个是 Men,一个是 Shoes,我希望得到的结果当然是“男式鞋子”,也就是说只有同时满足了 Men AndShoes 这两个条件的结果才应该显示在搜索结果里。但是Magento默认的搜索机制是“Or”,也就是满足“Men”或者“Shoes”任何一个条件的结果都显示在搜索结果里,其后果是输入“Men Shoes”后,Men Wear, Men Pants,Men Jewelry只要和 Men相关的结果都显示在搜索结果里,Women Shoes,Children Shoes等和Shoes 相关的内容也显示在结果里。 再举个例子,例如我们搜索"Nokia 8810",我们希望是搜索Nokia的 8810型号的手机,但是Magento网站会把所有Nokia手机和别的带8810字样的产品显示在搜索结果里。 这种情况显然是我们不想看到的,特别是当我们有很多产品的时候;那么如何将 Magento的搜索条件从“Or”改为“And”呢: app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php 在ftp中找到这个文件,复制一份到 app/code/local/Mage/CatalogSearch/Model/Resource/Fulltext.php 打开local下的这个Fulltext.php文件,在大约 331 行左右找到 如下代码 $likeCond = '(' . join(' OR ', $like) . ')';
和 355行左右找到如下代码: 将两处的 OR 用 AND 替换。保存。 然后再到Magento后台 System -> Configuration -> Catalog -> Catalog -> Catalog Search 里面将 Search Type改为 Combine(Like and Fulltext) , 点击 Save Config保存,刷新缓存。
在前台试试搜索一个手机型号:ZOPO ZP910, OK ZOPO其他型号的手机不显示在结果里面了,修改成功。 (责任编辑:最模板) |