Magento网站搜索结果过多问题的解决 – OR 还是 AND

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 相关的内容也显示在结果里。

Thank you for reading this post, don't forget to subscribe!

再举个例子,例如我们搜索"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行左右找到如下代码:
if ($likeCond != '' && $searchType == Mage_CatalogSearch_Model_Fulltext::SEARCH_TYPE_COMBINE) {                   $where .= ($where ? ' OR ' : '') . $likeCond;

将两处的 OR 用 AND 替换。保存。

然后再到Magento后台 System -> Configuration -> Catalog -> Catalog -> Catalog Search 里面将 Search Type改为 Combine(Like and Fulltext) , 点击 Save Config保存,刷新缓存。

searchissue

在前台试试搜索一个手机型号:ZOPO ZP910, OK ZOPO其他型号的手机不显示在结果里面了,修改成功。

searchissue2

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注