增加Magneto 搜索精确度代码版

增加Magneto 搜索精确度代码版

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) . ')';

发表评论

发表评论

*

沙发空缺中,还不快抢~