ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能
2016-06-13 13:05 来源:www.chinab4c.com 作者:ecshop专家
各位ECSHOP网店系统用户大家好,欢迎来到ECSHOP教程网图文教程,今天为大家详细解说一下ECSHOP商品关键词模糊分词搜索商品列表关键字加红功能。 ECSHOP教程网ECSHOP视频教程也再不断的完善与跟进,期待大家的关注!希望在ECSHOP的道路上,ECSHOP教程网与您一路同行! 最近给客户做一个ECSHOP商城,发现ECSHOP的模糊搜索要求太高,需要加入and、空格、加号等,客户搜索的时候不可能这样操作。 考虑到工期的问题,采用了织梦的分词算法,搜索效果虽然不是特别理想,但是这么短的时间也只能这样了。 在此分享给没钱又着急的朋友,需要用到的文件在文章末尾提供下载,大家下载后也可以直接覆盖使用。 一、ECSHOP联想下拉框 1、修改page_header.lbi模版文件,将搜索文本框修改为: ecshop" 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" />
嵌入js文件 嵌入css文件 2、根目录添加php文件search_suggest.php文件 二、分词搜索 ECSHOP教程根目录增加织梦分词算法函数和词库: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行 /* 获得符合条件的商品总数 */ $sql = "SELECT COUNT(*) FROM " .$ecs->table('goods'). " AS g ". "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock ." ) ".$tag_where." )"; $count = $db->getOne($sql); $max_page = ($count> 0) ? ceil($count / $size) : 1; if ($page > $max_page) { $page = $max_page; } /* 查询商品 */ $sql = "SELECT g.goods_id, g.goods_name, g.market_price, g.is_new, g.is_best, g.is_hot, g.shop_price AS org_price, ". "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ". "g.promote_price, g.promote_start_date, g.promote_end_date, g.goods_thumb, g.goods_img, g.goods_brief, g.goods_type ". "FROM " .$ecs->table('goods'). " AS g ". "LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ". "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ". "WHERE g.is_delete = 0 AND g.is_on_sale = 1 AND g.is_alone_sale = 1 $attr_in ". "AND (( 1 " . $categories . $keywords . $brand . $min_price . $max_price . $intro . $outstock . " ) ".$tag_where." ) " . "ORDER BY $sort $order"; 打开 /includes/lib_goods.php 文件(建议使用editplus)找到下面代码(大概在287行左右) /*sun04zh3-20130905-调用织梦分词功能-更改ecshop的sql语句采用union方式-start*/ /*因为后面要用union生成数据集表,所以先根据拆分出的关键词,生成union所需的所有sql语句,*/ $select = "("; foreach($arr AS $se => $t) { $select .= "SELECT click_count,goods_sn,is_alone_sale,is_on_sale,is_delete,goods_id, goods_name, market_price, is_new, is_best, is_hot, shop_price AS org_price, shop_price ,promote_price, promote_start_date, promote_end_date, goods_thumb, goods_img, goods_brief, goods_type FROM(select click_count,goods_sn,is_alone_sale,is_on_sale,is_delete,goods_id, goods_name, market_price, is_new, is_best, is_hot, shop_price AS org_price, shop_price ,promote_price, promote_start_date, promote_end_date, goods_thumb, goods_img, goods_brief, goods_type from".$ecs->table('goods')." where goods_name like '%$t%' order by click_count desc) AS P$se";//第一个关键词是完整关键词 if($se==0)//插入一个当所有拆分关键词在商品名称中为and时的sql语句 { $select .= " UNION SELECT click_count,goods_sn,is_alone_sale,is_on_sale,is_delete,goods_id, goods_name, market_price, is_new, is_best, is_hot, shop_price AS org_price, shop_price ,promote_price, promote_start_date, promote_end_date, goods_thumb, goods_img, goods_brief, goods_type FROM(select click_count,goods_sn,is_alone_sale,is_on_sale,is_delete,goods_id, goods_name, market_price, is_new, is_best, is_hot, shop_price AS org_price, shop_price ,promote_price, promote_start_date, promote_end_date, goods_thumb, goods_img, goods_brief, goods_type from".$ecs->table('goods')." where 1 $keywords order by click_count desc) AS Pa"; } if($se{$goods.tihuan}
四、文中所有涉及的修改和要用到的文件 下载地址:www.ecshop119.com/moban-311.html
最近更新
常用插件
- ecshop注册推荐送现金插件
ecshop中的促销售功能还不是很完善,随着电子商务系统的发展和进步,...
- ecshop2.7.2退换货申请插件
ecshop2.7.2退换货申请插件,主要是在 ecshop 现在的基础上,对ecshop的订单处...
- ecshop会员中心订单excel倒出
ecshop会员中心订单excel倒出...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop二次开发商品购买备
ecshop销售统计 插件介绍:ecshop二次开发订单销售统计和商品购买备注服...