Magento CatalogSearch使用OR而不是AND

时间:2014-04-09 14:33:48

标签: magento

我有一个自定义目录搜索,有多个要搜索的字段(例如:宽度,长度等)。但默认情况下,Magento正在将其作为AND搜索。我希望它是一个OR搜索。

这是一个设置吗?我没有看到任何东西。

1 个答案:

答案 0 :(得分:0)

您刚刚找到Magento技巧来增加 LIKE 搜索的回报金额。将其更改为 OR 逻辑并不能让它变得更好。更多结果,甚至更少的相关性。

您最好使用Lucene,Sphinx或Solr作为搜索索引器。前两个有模块,最后一个是Web服务器的功能。

在Magento的风车上倾斜将 AND 更改为 OR 需要进行类覆盖

app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php

public function prepareResult($object, $queryText, $query)

if ($like) {
     $likeCond = '(' . join(' AND ', $like) . ')';
}

需要

if ($like) {
     $likeCond = '(' . join(' OR ', $like) . ')';
}

请记住,当Magento决定使用 OR 逻辑发布更高版本时,每个人都要求反向。

良好的搜索从Lucene开始,它是内置于Zend框架中的Magento基于并从那里上升的。它具有干扰,多元和模糊搜索功能,可以轻微拼写错误。而且非常重要的是,相关评级实际上是生成的,因此按相关性排序实际上有效 TM

Magento LIKE 搜索没有相关性,返回是任意的,通常是按数据库顺序,因此添加更多返回仅意味着您的客户经常需要排序10-30页才能找到任何内容。