Magento的搜素结果是很不精确的。可以将头部的搜素改成高级搜索的按照产品名称搜索,这样又会产生一个问题就是搜索的关键词只能是不间断的,比如示例数据Nokia 2610 Phone ,搜索Nokia phone 将不会出现结果。等下我们就简单解决这个问题。
先将头部默认的搜索给替换成高级搜索的名称搜索
$value= isset($_GET['name'])?$_GET['name'] : $this->helper('catalogSearch')->getEscapedQueryText();
主要修改的文件是app\design\frontend\base\default\template\catalogsearch\form.mini.phtml
修改action 和input表单的name属性 。
<form id="search_mini_form" action="<?php echo Mage::getBaseUrl('web') ?>catalogsearch/advanced/result/" method="get"> <input id="search" type="text" class="input-live-search" name="name" value="<?php echo $value; ?>" />
这样头部搜索就简单的替换成了高级搜索中的按产品名称搜索了。这样会出现的问题就是如开头说的搜索Nokia phone 将不会出现结果。这个问题我的简单的修改方法是找到文件 app\code\core\Mage\CatalogSearch\Model\Resource\Advanced.php 这个文件找到第94行左右
//$condition = array('like' => '%' . $value . '%'); // text search
替换成:
$line = str_replace(' ','%',$value); $condition = array('like' => '%' . $line . '%');
这样就可以获得结果了。
搜索不精确,在使用前台快速搜索产品时,会发现搜索的数量过多的问题不精确,在magento 1.7以上的,找到 app/code/core/Mage/CatalogSearch/Model/Resource/Fulltext.php 修改
查找
$likeCond = '(' . join(' OR ', $like) . ')';
为替换
$likeCond = ‘(‘ . join(‘ AND ‘, $like) . ‘)’;
也就是OR替换 AND注意大小写
参考资料:关于magento搜索无结果的解决办法
Magento关于无法刷行索引以及搜索无结果解决方法