ECSHOP模糊分词搜索和商品列表关键字飘红功能

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家

最近在用ECSHOP做一个商城,发现ECSHOP的模糊搜索要求太高,需要加入and、空格、加号等,客户搜索的时候不可能这样操作。所以想对搜索功能进行改进,可是在网上没有找到这样的插件,有收费的,结果要2000大元。考虑了一下申请经费的麻烦,自己费点儿力气做一个吧。

考虑到工期的问题,采用了织梦的分词算法,搜索效果虽然不是特别理想,但是这么短的时间也只能这样了。

在此分享给没钱又着急的朋友,需要用到的文件在文章末尾提供下载,大家下载后也可以直接覆盖使用。

一、ECSHOP联想下拉框

1、修改page_header.lbi模版文件,将搜索文本框修改为:

复制代码
<input name="keywords" type="text" id="keyword" value="<!--{if ($search_keywords neq "")}{$search_keywords|escape}--><!--{else}-->ecshop<!--{/if}-->" class="search-input"onfocus="if(this.value=='ecshop'){this.value='';this.style.color='#000';}"onblur="closediv();if(this.value==''){this.value='ecshop';this.style.color='#999';}" style="color:#999;"onkeyup="keyupdeal(event,this.value);" onkeydown="keydowndeal(event);" onclick="keyupdeal(event,this.value);"autocomplete="off" />
<div id="search_suggest" style="display:none;" onmouseover='javascript:_over();' onmouseout='javascript:_out();'></div>
复制代码
嵌入js文件

<script type="text/javascript" src="/js/suggest.js"></script>
嵌入css文件

<link href="/themes/default/images/css.css" rel="stylesheet" type="text/css">
2、根目录添加php文件search_suggest.php文件

二、分词搜索

根目录增加织梦分词算法函数和词库:lib_splitword_full.php和dededic.csv

1、修改search.php文件第196行

/* 检查关键字中是否有空格,如果存在就是并 */
$arr= explode(' ', $_REQUEST['keywords']);
$operator= " AND ";
改为:

复制代码
/*调用织梦分词功能-start*/
require("lib_splitword_full.php");
$sp = new SplitWord();
$fenci=$sp->SplitRMM($_REQUEST['keywords']);
$sp->Clear();
/* 织梦分词后是使用空格进行划分,所以仍可使用ecshop的按照空格拆分为数组功能:检查关键字中是否有空格,如果存在就是并 */
$arr= explode(' ', $fenci);
$arr= array_reverse($arr);//将数组倒序排列,并插入完整关键字到数组末尾
$arr[count($arr)]=$_REQUEST['keywords'];
$arr= array_reverse($arr);//再次将数组倒序,使完整关键字可以第一个被检索
array_pop($arr);//删除织梦分词产生的数组最后一个元素为空格
$operator= " and ";//sql检索语句使用union联合检索
$piaohong = $arr;//$arr数组在飘红的时候已经被产品列表占用了,所以另外赋值给一个数组备用。
/*调用织梦分词功能-end*/
复制代码
2、修改search.php文件第382行到403行
四、文中所有涉及的修改和要用到的文件,因为没找到上传文件的地方所有放到其他网站了。下载地址:http://download.csdn.net/detail/sun04zh3/6216851

回答:
http://www.chinab4c.com/html/sha ... 2012/1130/1050.html

参考下这片文章。解决ECSHOP搜索问题