最新消息:觉得本站不错的话 记得收藏哦 博客内某些功能仅供测试 讨论群:135931704 快养不起小站了 各位有闲钱就打赏下把 My Email weicots#gmail.com Please replace # with @

增加Magneto 搜索精确度代码版

Magento 资料整理 ajiang-tuzi 5173浏览

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关于无法刷行索引以及搜索无结果解决方法

转载请注明:(●--●) Hello.My Weicot » 增加Magneto 搜索精确度代码版

蜀ICP备15020253号-1