上海网站关键词优化,网站建设力洋,wordpress 重新设置密码,12380 举报网站建设各位ECSHOP网店系统用户大家好#xff0c;欢迎来到ECSHOP商品关键词模糊分词搜索商品列表关键字加红功能。最近给客户做一个ECSHOP商城#xff0c;发现ECSHOP的模糊搜索要求太高#xff0c;需要加入and、空格、加号等#xff0c;客户搜索的时候不可能这样操作。考虑到工期的…各位ECSHOP网店系统用户大家好欢迎来到ECSHOP商品关键词模糊分词搜索商品列表关键字加红功能。最近给客户做一个ECSHOP商城发现ECSHOP的模糊搜索要求太高需要加入and、空格、加号等客户搜索的时候不可能这样操作。考虑到工期的问题采用了织梦的分词算法搜索效果虽然不是特别理想但是这么短的时间也只能这样了。在此分享给没钱又着急的朋友需要用到的文件在文章末尾提供下载大家下载后也可以直接覆盖使用。一、ECSHOP联想下拉框1、修改page_header.lbi模版文件将搜索文本框修改为ecshop classsearch-input οnfοcusif(this.valueecshop){this.value;this.style.color#000;} οnblurclosediv();if(this.value){this.valueecshop;this.style.color#999;} stylecolor:#999; οnkeyupkeyupdeal(event,this.value); οnkeydοwnkeydowndeal(event); οnclickkeyupdeal(event,this.value); autocompleteoff / 嵌入js文件嵌入css文件2、根目录添加php文件search_suggest.php文件二、分词搜索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($se0)//插入一个当所有拆分关键词在商品名称中为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($setable(goods). AS P .WHERE is_delete 0 AND is_on_sale 1 AND is_alone_sale 1 ; } else { /* 获得符合条件的商品总数 */$sql SELECT COUNT(*) FROM $select AS P .WHERE is_delete 0 AND is_on_sale 1 AND is_alone_sale 1 ; } $count $db-getOne($sql); $max_page ($count 0) ? ceil($count / $size) : 1; if ($page $max_page) { $page $max_page; } if($select())//当关键词为空时没有拆分关键词所以用于union的$select为空仍需要调用goods表 { /* 查询商品 */$sql 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). AS P .WHERE is_delete 0 AND is_on_sale 1 AND is_alone_sale 1 ; } else { /* 查询商品 */$sql 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 AS P .WHERE is_delete 0 AND is_on_sale 1 AND is_alone_sale 1 ; }三、搜索出的产品列表产品关键词飘红功能1、修改search.php文件第473行到480行if($display grid) { $arr[$row[goods_id]][goods_name] $GLOBALS[_CFG][goods_name_length] 0 ? sub_str($row[goods_name], $GLOBALS[_CFG][goods_name_length]) : $row[goods_name]; } else { $arr[$row[goods_id]][goods_name] $row[goods_name]; }修改为/*根据分词对产品名称进行替换-start*/$tihuan$row[goods_name]; foreach($piaohong AS $ph_count $ph) { $tihuan str_replace($ph,$ph,$tihuan); } $arr[$row[goods_id]][goods_name] $row[goods_name];//因为前台用到没有替换的商品名称所以保留goods_name值$arr[$row[goods_id]][tihuan] $tihuan; /*根据分词对产品名称进行替换-end*/2、修改search.dwt模板文件将显示商品名称的地方替换为{$goods.tihuan}四、文中所有涉及的修改和要用到的文件