我在使用 Magento 快速搜索时遇到了一个小问题。当我在框中搜索时说
ice machine
然后一切都将返回它所在的位置ice
或machine
标题中。我需要它,所以它只会搜索ice machine
标题中包含确切字符串的产品。
我发现如果我加上"ice machine"
双语音标记,它只会返回完全匹配的产品名称。
所以我需要一种方法,以便自动在搜索查询周围添加双语音标记,以便它会搜索全文而不是单独搜索两个单词。
有没有办法以 HTML 的形式做到这一点?
MagentoCommerce 论坛多次讨论了这个问题。Like 搜索逻辑从 AND 更改为 OR。为了提供更好的结果,需要将其更改回 AND,以便搜索查询中的所有项目都必须匹配。
在app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php找到类public function prepareResult($object, $queryText, $query)
下面的一段代码:
if ($like) {
$likeCond = '(' . join(' OR ', $like) . ')';
}
需要是
if ($like) {
$likeCond = '(' . join(' AND ', $like) . ')';
}
创建您自己的重写模块以仅覆盖此类或通过将整个文件 Fulltext.php 复制到app/code/local/Mage/CatalogSearch/Model/Mysql4/Fulltext.php并将OR修改为AND来进行覆盖。该模块是优选的。
使用表单,您可以使用 javascript 执行此操作,但您必须注意客户是否已经自己输入了双引号。
我的建议是重写Mage_CatalogSearch_Helper_Data
助手并覆盖该getQueryText()
方法。在那里,您可以引用现有引号并在查询周围添加您自己的引号。