2

我在使用 Magento 快速搜索时遇到了一个小问题。当我在框中搜索时说

ice machine

然后一切都将返回它所在的位置icemachine标题中。我需要它,所以它只会搜索ice machine标题中包含确切字符串的产品。

我发现如果我加上"ice machine"双语音标记,它只会返回完全匹配的产品名称。

所以我需要一种方法,以便自动在搜索查询周围添加双语音标记,以便它会搜索全文而不是单独搜索两个单词。

有没有办法以 HTML 的形式做到这一点?

4

2 回答 2

1

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来进行覆盖。该模块是优选的。

于 2012-07-03T15:18:49.807 回答
0

使用表单,您可以使用 javascript 执行此操作,但您必须注意客户是否已经自己输入了双引号。
我的建议是重写Mage_CatalogSearch_Helper_Data助手并覆盖该getQueryText()方法。在那里,您可以引用现有引号并在查询周围添加您自己的引号。

于 2012-07-03T09:27:49.017 回答