亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > 帝國Empire > 正文

帝國CMS優化讓搜索支持多關鍵字詞空格搜索結果

2024-08-28 12:25:18
字體:
來源:轉載
供稿:網友

  本方法帶來的其他影響因素暫未測試(目前已知熱門搜索關鍵字詞調用的時候,關鍵字也是帶有空格的。暫未發現其他)

  簡單優化了下官方的默認搜索系統,讓搜索支持多個關鍵字詞之間可以使用空格區分(兩個關鍵詞之間多少空格都無所謂,多個關鍵詞也無所謂,都支持)

  效果截圖,搜索前:

1.png

  效果截圖,搜索后:

2.png

  后臺搜索記錄截圖:

3.png

  修改方法,打開/e/search/index.php

  1、找到:

//處理關鍵字 function SearchDoKeyboardVar($keyboard){ $keyboard=RepPostVar2(trim($keyboard)); $keyboard=str_replace(' ','',$keyboard); return $keyboard; }
修改為:
//處理關鍵字
function SearchDoKeyboardVar($keyboard){
        $keyboard=RepPostVar2(trim($keyboard));
        //$keyboard=str_replace('  ','',$keyboard);
/*xuan 搜索關鍵字優化*/
$keyboard=preg_replace('/[/s]+/s', ' ', $keyboard);
/*xuan 搜索關鍵字優化*/
        return $keyboard;
}
2、找到:
//(有兩處,修改第二處)
$where=$f." LIKE '%".$keyboard."%'";
7.0版為:
$where=$f." LIKE '%".str_replace(" ","%",$keyboard)."%'";
修改為:
/*xuan 搜索關鍵字優化*/
preg_match_all("/[^/s]+/s",$keyboard,$keyarr);
foreach ($keyarr[0] as $val){
$tj.=$f." like '%".$val."%' or ";
}
$where=substr($tj,0,-4);
/*xuan 搜索關鍵字優化*/
這樣即可。
懶人直接復制以下代碼替換/e/search/index.php中所有代碼即可
/e/search/index.php:
<?php
require("../class/connect.php");
require("../class/db_sql.php");
require("../data/dbcache/class.php");
require("../class/q_functions.php");
eCheckCloseMods('search');//關閉模塊
$link=db_connect();
$empire=new mysqlquery();

//處理關鍵字
function SearchDoKeyboardVar($keyboard){
        $keyboard=RepPostVar2(trim($keyboard));
        //$keyboard=str_replace('  ','',$keyboard);
/*xuan 搜索關鍵字優化*/
$keyboard=preg_replace('/[/s]+/s', ' ', $keyboard);
/*xuan 搜索關鍵字優化*/
        return $keyboard;
}

//返回SQL
function SearchDoKeyboard($f,$hh,$keyboard){
        $where='';
        $keyboard=SearchDoKeyboardVar($keyboard);
        if(empty($keyboard))
        {
                return "";
        }
        if(!empty($hh))
        {
                if($hh=='LT')//小于
                {
                        $where=$f."<'".$keyboard."'";
                }
                elseif($hh=='GT')//大于
                {
                        $where=$f.">'".$keyboard."'";
                }
                elseif($hh=='EQ')//等于
                {
                        $where=$f."='".$keyboard."'";
                }
                elseif($hh=='LE')//小于等于
                {
                        $where=$f."<='".$keyboard."'";
                }
                elseif($hh=='GE')//大于等于
                {
                        $where=$f.">='".$keyboard."'";
                }
                elseif($hh=='NE')//不等于
                {
                        $where=$f."<>'".$keyboard."'";
                }
                elseif($hh=='IN')//包含
                {
                        $kr=explode(' ',$keyboard);
                        $kcount=count($kr);
                        $kbs='';
                        $dh='';
                        for($i=0;$i<$kcount;$i++)
                        {
                                $kr[$i]=(float)$kr[$i];
                                if(empty($kr[$i]))
                                {
                                        continue;
                                }
                                if($kbs)
                                {
                                        $dh=',';
                                }
                                $kbs.=$dh."'".$kr[$i]."'";
                        }
                        if($kbs)
                        {
                                $where=$f." IN (".$kbs.")";
                        }
                        else
                        {
                                return '';
                        }
                }
                elseif($hh=='BT')//范圍
                {
                        $keyboard=ltrim($keyboard);
                        if(!strstr($keyboard,' '))
                        {
                                return '';
                        }
                        $kr=explode(' ',$keyboard);
                        $kr[0]=(float)$kr[0];
                        $kr[1]=(float)$kr[1];
                        if(!trim($kr[0])||!trim($kr[1]))
                        {
                                return '';
                        }
                        $where=$f." BETWEEN '".$kr[0]."' and '".$kr[1]."'";
                }
                else//相似
                {
                        $where=$f." LIKE '%".$keyboard."%'";
                }
        }
        else
        {
                //$where=$f." LIKE '%".str_replace(" ","%",$keyboard)."%'";
/*xuan 搜索關鍵字優化*/
preg_match_all("/[^/s]+/s",$keyboard,$keyarr);
foreach ($keyarr[0] as $val){
$tj.=$f." like '%".$val."%' or ";
}
$where=substr($tj,0,-4);
/*xuan 搜索關鍵字優化*/
        }
        return $where;
}

//變量
if($_GET['searchget']==1)
{
        $_POST=$_GET;
}

$ip=egetip();
$searchtime=time();
$getvar=$_POST['getvar'];
if(empty($getvar))
{
        $getfrom="history.go(-1)";
        $dogetvar='';
}
else
{
        $getfrom="../../search/";
        $dogetvar="&getvar=1";
}
//返回
$getfrom=DoingReturnUrl($getfrom,$_POST['ecmsfrom']);
//搜索用戶組
if($public_r['searchgroupid'])
{
        $psearchgroupid=$public_r['searchgroupid'];
        @include("../data/dbcache/MemberLevel.php");
        $searchgroupid=(int)getcvar('mlgroupid');
        if($level_r[$searchgroupid][level]<$level_r[$psearchgroupid][level])
        {
                printerror("NotLevelToSearch",$getfrom,1);
        }
}
//搜索間隔
$lastsearchtime=getcvar('lastsearchtime');
if($lastsearchtime)
{
        if($searchtime-$lastsearchtime<$public_r[searchtime])
        {
                printerror("SearchOutTime",$getfrom,1);
        }
}
//搜索字段
$searchclass=$_POST['show'];
if(empty($searchclass)||@strstr($searchclass," "))
{
        printerror("SearchNotRecord",$getfrom,1);
}
//時間范圍
$add='';
$addtime='';
$starttime=RepPostVar($_POST['starttime']);
if(empty($starttime))
{
        $starttime="0000-00-00";
}
$endtime=RepPostVar($_POST['endtime']);
if(empty($endtime))
{
        $endtime="0000-00-00";
}
if($endtime!="0000-00-00")
{
        $addtime=" and (newstime BETWEEN '".to_time($starttime." 00:00:00")."' and '".to_time($endtime." 23:59:59")."')";
}
//價格
$addprice='';
$startprice=(int)$_POST['startprice'];
$endprice=(int)$_POST['endprice'];
if($endprice)
{
        $addprice=" and (price BETWEEN ".$startprice." and ".$endprice.")";
}
//搜索欄目及表
$classid=RepPostVar($_POST['classid']);
$s_tbname=RepPostVar($_POST['tbname']);
$s_tempid=(int)$_POST['tempid'];
$trueclassid=0;
if($classid)//按欄目
{
        if(strstr($classid,","))//多欄目
        {
                $son_r=sys_ReturnMoreClass($classid,1);
                $trueclassid=$son_r[0];
                $add.=' and ('.$son_r[1].')';
        }
        else
        {
                $trueclassid=intval($classid);
                $add.=$class_r[$trueclassid][islast]?" and classid='$trueclassid'":" and ".ReturnClass($class_r[$trueclassid][sonclass]);
        }
        $tbname=$class_r[$trueclassid][tbname];
        $modid=$class_r[$trueclassid][modid];
}
elseif($s_tbname)//按數據表
{
        $tbnamenum=$empire->gettotal("select count(*) as total from {$dbtbpre}enewstable where tbname='$s_tbname' limit 1");
        if(!$tbnamenum)
        {
                printerror("SearchNotRecord",$getfrom,1);
        }
        $tbname=$s_tbname;
        //模型id
        $thestemp_r=$empire->fetch1("select modid from ".GetTemptb("enewssearchtemp")." where tempid='$s_tempid'");
        if(empty($thestemp_r['modid']))
        {
                printerror("SearchNotRecord",$getfrom,1);
        }
        $modid=$thestemp_r['modid'];
}
else
{
        $tbname=$public_r['tbname'];
        $modid=0;
}
//表不存在
if(empty($tbname)||InfoIsInTable($tbname))
{
        printerror("SearchNotRecord",$getfrom,1);
}
//標題分類
$ttid=RepPostVar($_POST['ttid']);
$truettid=0;
if($ttid)
{
        if(strstr($ttid,","))//多標題分類
        {
                $son_r=sys_ReturnMoreTT($ttid);
                $truettid=$son_r[0];
                $add.=' and ('.$son_r[1].')';
        }
        else
        {
                $truettid=intval($ttid);
                $add.=" and ttid='$truettid'";
        }
}
//會員
$member=$_POST['member'];
if($member==1)
{
        $add.=' and ismember=1';
}
elseif($member==2)
{
        $add.=' and ismember=0';
}
//模型
$tempr=array();
if(empty($class_r[$trueclassid][searchtempid]))
{
        if(empty($modid))
        {
                $tempr=$empire->fetch1("select modid from ".GetTemptb("enewssearchtemp")." where isdefault=1 limit 1");
        }
        else
        {
                $tempr[modid]=$modid;
        }
}
else
{
        $tempr[modid]=$modid;
}

//關鍵字
$keyboard=$_POST['keyboard'];
$keyboardone=0;
if(is_array($keyboard))
{}
elseif(strstr($keyboard,','))
{
        $keyboard=explode(',',$keyboard);
}
else
{
        $keyboard=trim($keyboard);
        $len=strlen($keyboard);
        if($len<$public_r[min_keyboard]||$len>$public_r[max_keyboard])
        {
                printerror("MinKeyboard",$getfrom,1);
        }
        $keyboardone=1;
}

//符號
$hh=$_POST['hh'];
$hhone=0;
if(is_array($hh))
{}
elseif(strstr($hh,','))
{
        $hh=explode(',',$hh);
}
else
{
        $hhone=1;
}

//字段
if(!is_array($searchclass))
{
        $searchclass=explode(',',$searchclass);
}

$andor=$_POST['andor'];
$andor=$andor=='and'?'and':'or';

$mr=$empire->fetch1("select searchvar,tbname from {$dbtbpre}enewsmod where mid='$tempr[modid]'");
if(!strstr($mr[searchvar],",price,"))//是否包含價格
{
        $addprice="";
        $startprice=0;
        $endprice=0;
}
//搜索特殊字段
$mr[searchvar].='id,keyboard,userid,username,';
$where='';
$newsearchclass='';
$count=count($searchclass);
for($i=0;$i<$count;$i++)
{
        if(empty($searchclass[$i]))
        {
                continue;
        }
        $searchclass[$i]=str_replace(',','',$searchclass[$i]);
        if(!strstr($mr[searchvar],",".$searchclass[$i].","))
        {
                continue;
        }
        $searchclass[$i]=RepPostVar($searchclass[$i]);
        $dh=empty($newsearchclass)?'':',';
        $newsearchclass.=$dh.$searchclass[$i];
        $dohh=$hhone==1?$hh:$hh[$i];
        $dokeyboard=$keyboardone==1?$keyboard:$keyboard[$i];
        $onewhere=SearchDoKeyboard($searchclass[$i],$dohh,$dokeyboard);
        if($onewhere)
        {
                $or=empty($where)?'':' '.$andor.' ';
                $where.=$or.'('.$onewhere.')';
        }
}
//參數錯
if(empty($newsearchclass))
{
        printerror("SearchNotRecord",$getfrom,1);
}
if($where)
{
        $add.=' and ('.$where.')';
}
$allwhere=$add.$addtime.$addprice;
$keyboard=$keyboardone==1?SearchDoKeyboardVar($keyboard):'';
$andsql=addslashes($allwhere);
if(strlen($newsearchclass)>250||strlen($classid)>200||strlen($andsql)>3000||strlen($keyboard)>100||strlen($ttid)>200)
{
        printerror("SearchNotRecord",$getfrom,1);
}
//驗證碼
$checkpass=md5($allwhere.$tbname);
$query="select count(*) as total from {$dbtbpre}ecms_".$tbname.($allwhere?' where '.substr($allwhere,5):'');
$search_r=$empire->fetch1("select searchid from {$dbtbpre}enewssearch where checkpass='$checkpass' limit 1");
$searchid=$search_r[searchid];
//排序
$orderby=RepPostVar($_POST['orderby']);
$myorder=(int)$_POST['myorder'];
if($orderby)
{
        $orderr=ReturnDoOrderF($tempr[modid],$orderby,$myorder);
        $orderby=$orderr['returnf'];
}
else
{
        $orderby='newstime';
}
//是否有歷史記錄
if($searchid)
{
    $search_num=$empire->gettotal($query);
        $sql=$empire->query("update {$dbtbpre}enewssearch set searchtime='$searchtime',result_num='$search_num',onclick=onclick+1,orderby='$orderby',myorder='$myorder',tempid='$s_tempid' where searchid='$searchid'");
        if(empty($search_num))
        {
                $searchid=0;
        }
}
else
{
        $search_num=$empire->gettotal($query);
        if(empty($search_num))
        {
                $searchid=0;
        }
        else
        {
                $iskey=$keyboardone==1?0:1;
                $sql=$empire->query("insert into {$dbtbpre}enewssearch(searchtime,keyboard,searchclass,result_num,searchip,classid,onclick,orderby,myorder,checkpass,tbname,tempid,iskey,andsql,trueclassid) values('$searchtime','$keyboard','$newsearchclass','$search_num','$ip','$classid',1,'$orderby','$myorder','$checkpass','$tbname','$s_tempid','$iskey','$andsql','$trueclassid')");
                $searchid=$empire->lastid();
        }
}
//設置最后搜索時間
$set1=esetcookie("lastsearchtime",$searchtime,$searchtime+3600*24);
if(!$searchid)
{
        printerror("SearchNotRecord",$getfrom,1);
}
else
{
        Header("Location:result/?searchid=$searchid".$dogetvar);
}
db_close();
$empire=null;
?>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97超级碰碰人国产在线观看| www.美女亚洲精品| 午夜精品福利在线观看| 久久精品最新地址| 成人女保姆的销魂服务| 国产日韩欧美电影在线观看| 在线精品视频视频中文字幕| 欧美日韩国产成人在线观看| 国产精品女人网站| 少妇av一区二区三区| 九九久久久久久久久激情| 亚洲欧美在线第一页| 欧美成在线视频| 成人免费观看网址| 亚洲在线免费观看| 中文字幕在线观看日韩| 亚洲情综合五月天| 久久精品电影网站| 亚洲xxxx在线| 色综合久久久久久中文网| 日韩精品视频免费| 国产精品成人一区二区三区吃奶| 久久精品国产一区二区电影| www日韩中文字幕在线看| www.亚洲成人| 国产精品美女主播| 日韩电影大全免费观看2023年上| 国产精品国产福利国产秒拍| 精品久久在线播放| 黄色精品一区二区| 国产精品第3页| 日本久久久久久久| 91久久综合亚洲鲁鲁五月天| 国产精品久久久久免费a∨大胸| 欧美在线观看网址综合| 欧美激情2020午夜免费观看| 98精品国产高清在线xxxx天堂| 欧美激情小视频| 欧美精品在线观看91| 一区二区成人av| 国产日韩亚洲欧美| 国产91精品高潮白浆喷水| 亚洲性猛交xxxxwww| 成人97在线观看视频| 国产主播在线一区| 欧美激情小视频| 精品国产精品三级精品av网址| 亚洲精品一区二区三区婷婷月| 韩剧1988在线观看免费完整版| 少妇高潮久久久久久潘金莲| 欧美一区二区大胆人体摄影专业网站| 欧美在线日韩在线| 韩国精品美女www爽爽爽视频| 亚洲天堂男人天堂女人天堂| 最新国产精品亚洲| 欧美第一黄网免费网站| 亚洲国产精彩中文乱码av| 欧美日韩色婷婷| 亚州欧美日韩中文视频| 欧美性色19p| 久久乐国产精品| 欧美插天视频在线播放| 国产精品免费久久久久影院| 懂色av影视一区二区三区| 91在线看www| 国产精品久久久久久久久久久久| 亚洲国产日韩欧美在线99| 91精品国产色综合久久不卡98| 中文字幕日韩av综合精品| 欧美激情奇米色| 性色av一区二区三区红粉影视| 91高清在线免费观看| 国产中文字幕亚洲| 91成人免费观看网站| 亚州国产精品久久久| 国产精品日日摸夜夜添夜夜av| 91精品久久久久久久久青青| 2019亚洲男人天堂| 国产欧美精品一区二区| 少妇av一区二区三区| 日韩在线观看免费高清完整版| 国产亚洲精品激情久久| 69国产精品成人在线播放| 国产深夜精品福利| 欧美亚洲另类激情另类| 欧美日本精品在线| 亚洲精品久久久一区二区三区| 欧美激情欧美狂野欧美精品| 欧美富婆性猛交| 亚洲韩国日本中文字幕| 中文字幕在线亚洲| 国产亚洲人成网站在线观看| 国产欧美精品xxxx另类| 91高清在线免费观看| 国模精品视频一区二区三区| 日韩精品在线播放| 亚洲男人天堂2019| 欧美劲爆第一页| 亚洲高清免费观看高清完整版| 91av网站在线播放| 久久久久久久久久久国产| 欧美激情精品久久久| 欧美成人午夜激情视频| 精品国产成人在线| 亚洲电影免费观看高清完整版在线| 夜夜嗨av一区二区三区免费区| 日韩中文在线不卡| 欧美成人三级视频网站| 亚洲成人av中文字幕| 欧美亚洲国产视频| 亚洲韩国青草视频| 亚洲品质视频自拍网| 日产精品久久久一区二区福利| 日韩高清a**址| 亚洲免费电影一区| 亚洲人精选亚洲人成在线| 日本成人精品在线| 欧美限制级电影在线观看| 91网在线免费观看| 日韩亚洲欧美中文在线| 亚洲成人国产精品| 久久久久久国产精品美女| 日韩免费观看在线观看| 亚洲欧美国产一区二区三区| 成人国产精品色哟哟| 亚洲а∨天堂久久精品喷水| 97视频人免费观看| 亚洲一级黄色av| 红桃av永久久久| 26uuu国产精品视频| 欧美国产亚洲精品久久久8v| 91麻豆国产语对白在线观看| 久久久久久网站| 亚洲韩国日本中文字幕| 精品欧美一区二区三区| 在线看日韩av| 97精品欧美一区二区三区| 色哟哟亚洲精品一区二区| 在线视频免费一区二区| 26uuu日韩精品一区二区| 亚洲丁香久久久| 中文字幕免费精品一区高清| 亚洲视屏在线播放| 久久精品一偷一偷国产| 97国产suv精品一区二区62| 国产精品扒开腿做爽爽爽男男| 欧美一区亚洲一区| 国内精品久久久久伊人av| 久久久久久久久久久免费| 日本久久中文字幕| 欧美日韩免费在线观看| 亚洲一区二区三区在线免费观看| 日韩欧美亚洲一二三区| 一区二区三区四区精品| 亚洲女人天堂色在线7777| 97视频色精品| 亚洲性日韩精品一区二区| 久久久国产精彩视频美女艺术照福利| 国产精品91在线| 久久免费成人精品视频| 久久亚洲精品中文字幕冲田杏梨| 亚洲成人aaa| 伊人男人综合视频网| 国产精品自拍偷拍视频|