关键词联想关联 php,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能...

各位ECSHOP网店系统用户大家好,欢迎来到ECSHOP商品关键词模糊分词搜索商品列表关键字加红功能。

最近给客户做一个ECSHOP商城,发现ECSHOP的模糊搜索要求太高,需要加入and、空格、加号等,客户搜索的时候不可能这样操作。

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

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

一、ECSHOP联想下拉框

1、修改page_header.lbi模版文件,将搜索文本框修改为:ecshop" class="search-input"  οnfοcus="if(this.value=='ecshop'){this.value='';this.style.color='#000';}"  οnblur="closediv();if(this.value==''){this.value='ecshop';this.style.color='#999';}" style="color:#999;"  οnkeyup="keyupdeal(event,this.value);" οnkeydοwn="keydowndeal(event);" οnclick="keyupdeal(event,this.value);"   autocomplete="off" />    

嵌入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($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($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}

四、文中所有涉及的修改和要用到的文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。...

2019独角兽企业重金招聘Python工程师标准>>> 花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。 不要瞎变。 转载于:https://my.oschina.net/dongming/blog/40569

python全栈学习--day12(函数高级应用-带参数的装饰器,多个装饰器装饰一个函数)...

函数的执行时,*打散 函数的定义时,*聚合 from functools import wrapsdef wrapper(f):wraps(f)def inner(*args,**kwargs):执行函数之前的相关操作ret f(*args,**kwargs)执行函数之后的相关操作return retreturn inner wrapper def func1(*args):print…

Java学习总结 16个亮点

1.八大基本数据类型 byte(字节型8) int(整型;32;程序中一般默认为int型) short(短整型 16) long(长整型 32) float(浮点型 32) double(双精度浮点型 64) char(字符型 16) boolean(布尔型 只有true和false) 小范围内的整数类型可以通过赋值转化成大范围的数据类型.而大…

PHP聊天记录内啥,PHP的PSR系列轨范都有啥内容

PHP的PSR系列规范都有啥内容PSR是PHP Standard Recommendation的简写,它其实应该叫PSRs,即系列推荐标准:目前通过的规范有PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、…

选择排序法对数组进行排序

package selectionSort;import java.util.Arrays;public class Exam { //使用选择排序法对数组进行排序public static void main(String[] args) {int[] nums {23,3453,123,54,12,45,145,135,656,146,65};SelectionSort(nums);System.out.println(Arrays.toString(nums));}publ…

唐骏给李开复泼冷水:创业不可复制

东方企业家》十月刊刊登我主持的唐骏专栏,发表评创业热潮的冷思考。 题:创业是不可复制的 李开复从谷歌辞职,投身到创业热潮之中。很多媒体朋友问我,如何评价开复的辞职和创业?对此我一概未作回答。其实我很关注,也引…

爬取校园新闻首页的新闻

1. 用requests库和BeautifulSoup库,爬取校园新闻首页新闻的标题、链接、正文。 import requests from bs4 import BeautifulSoup url requests.get("http://news.gzcc.cn/html/xiaoyuanxinwen/")url.encoding "utf-8" soup BeautifulSoup(…

php服务划分,云计算提供的服务分为哪三个层次

三个层次:1、基础设施即服务(IaaS),向云计算提供商的个人或组织提供虚拟化计算资源;2、平台即服务(PaaS),为开发人员提供通过全球互联网构建应用程序和服务的平台;3、软件即服务((SaaS),通过互联网提供按需…

如何做个人职业规划和年度计划

在做规划的同时,已经结合工作和个人自身情况思考调整个人的职业规划以及2012年自己的学习成长计划。持续了大约2个月的时间,已经整理出了2012年自己的目标和计划。总结一下,制定个人规划大致分为几个步骤: 一、认识自己。主要包括…

centos 7 快速安装nginx

输入指令 vim /etc/yum.repos.d/nginx.repo 输入以下内容 [nginx] namenginx repo baseurlhttp://nginx.org/packages/centos/7/$basearch/ gpgcheck0 enabled1 wq 进行保存 验证是否安装成功 安装 yum install nginx 启动nginx服务 nginx 测试是否启动成功 在linux输入你的IP地…

matlab colorbar采用对数,matlab colorbar的使用 | 學步園

1:請問matlab中畫多張圖如何使用同一範圍的colorbar?例如生成了圖1,2,3生成圖1時,使用temp1caxis;將圖1的z值的取值範圍(即colorbar的取值範圍)取出。生成圖2,3時使用caxis(temp1)命令將圖2,3的z值的取值範圍設為同1相同。然後對各個同使用colorbar命令…

BFS简单搜索--POJ 2243

这题就是简单的BFS搜索&#xff0c;刚刚转到C&#xff0c;还有很多库函数不熟悉&#xff0c;理解到BFS是一种奇妙的迭代法&#xff0c;其用的主要是队列的性质。 1 /*BFS简单搜索*/ 2 #include<iostream> 3 #include<queue> 4 #include<cstring> 5 6 using …

python_cookies

1.将cookies保存到变量中&#xff0c;然后打印cookie中的值 #coding:utf-8 #将cookies保存到变量中&#xff0c;然后打印cookie中的值 import urllib2 import cookielib #声明一个CookieJar对象实例保存cookie cookiecookielib.CookieJar() #利用urllib2库中的HTTPCookieProces…

php拖拽原理,JS拖拽效果及原理解析

这篇文章主要介绍了如何实现js拖拽效果及原理解析,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下元素拖拽分成3个步骤&#xff1a;按下鼠标&#xff0c;移动鼠标&#xff0c;松开鼠标。拖拽原理&#xff1a;按下…

jqGrid细节备注—pager文字的设置,更改默认的提交方式

默认的pager显示的文字&#xff0c;在英文版本下是如下 (file grid.locale-en.js): $.jgrid { defaults : { recordtext: "View {0} - {1} of {2}", emptyrecords: "No records to view", loadtext: "Loading...", pgtext : "Page {0} of …

浅谈拓扑排序

今天来讲讲拓扑排序 度娘告诉我 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序&#xff0c;是将G中所有顶点排成一个线性序列&#xff0c;使得图中任意一对顶点u和v&#xff0c;若边(u,v)∈E(G)&#xff0c;则u在线性序列中出现在v之前。通常&#xff0c;这样…

iOS开发笔记[18/50]:在Mac OS X Lion系统中访问~/Library目录都需要点技巧

Mac虚拟机升级为Lion系统了&#xff0c;在iPhone模拟机调试时经常想访问应用程序的Document目录看看里面发生的状况&#xff0c;但在Lion系统中却找不到~/Library/Application Support/iPhone Simulator文件夹了。原来需要在Finder中这个~/Library文件夹默认是隐藏的&#xff0…

makemid+matlab,《MATLAB基础》双语课

MATLAB双语教学视频第17讲MATLAB双语教学视频第18讲Summarizing DataIn this section...“Overview” on page 5-10“Measures of Location” on page 5-10“Measures of Scale” on page 5-11“Shape of a Distribution” on page 5-11OverviewMany MATLAB functions enable y…

素数对猜想之python3实现

题目 让我们定义d​n​​为&#xff1a;d​n​​p​n1​​−p​n​​&#xff0c;其中p​i​​是第i个素数。显然有d​1​​1&#xff0c;且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。 现给定任意正整数N(<)&#xff0c;请计算不超…

java 获取六个月账期,应收帐龄分析里面账期分析能不能改为0-30天?

怎样安装摄像头的驱动程序怎样安装摄像头的驱动程序注意&#xff1a;请不要在未安装摄像头的驱动程序前将PC摄像头插入计算机USB接口中&#xff1b;如果在没有安装驱动程序的情况下提前插上摄像头&#xff0c;当WINDOWS提示安装驱动程序时&#xff0c;请点击取消键并将其拨出&a…