DedeCms教程:精确优化搜索结果

王朝学院·作者佚名  2016-08-22
窄屏简体版  字體: 小  |  中  |  大  |  超大  

由于DedeCMS搜索采用了分词,提升了搜索智能化,但是我们发现,搜索结果并没有变的更准确,本篇对DedeCMS的搜索进行一个优化,使它的搜索结果变的更智能、准确。

首先需要调整搜索页面的一个栏目关键词替换,找到/plus/search.php将其中58行代码:

foreach($typeArras$id=>$typename){$keyWordn=str_replac($typename,' ',$keyword);if($keyword!=$keywordn){

修改为:

foreach($typeArras$id=>$typename){//$keywordn = str_replace($typename, ' ', $keyword);$keywordn=$keyword;if($keyword!=$keywordn){

然后,我们再调整下分词检索的类,找到/include/arc.searchview.class.php,找到function GetKeywords($keyword)这个类的方法,替换为:

functionGetKeywords($keyword){global$cfg_soft_lang;$keyword=cn_substr($keyword,50);$row=$this->dsql->GetOne("SELECT spwords FROM `dede_search_keywords` WHERE keyword='".addslashes($keyword)."'; ");if(!is_array($row)){if(strlen($keyword)>7){$sp=newSplitWord($cfg_soft_lang,$cfg_soft_lang);$sp->SetSource($keyword,$cfg_soft_lang,$cfg_soft_lang);$sp->SetResultType(2);$sp->StartAnalysis(TRUE);$keywords=$sp->GetFinallyResult();$idx_keywords=$sp->GetFinallyIndex();ksort($idx_keywords);$keywords=$keyword.' ';foreach($idx_keywordsas$key=>$value){if(strlen($key)<=3){continue;}$keywords.=' '.$key;}$keywords=PReg_replace("/[ ]{1,}/"," ",$keywords);//var_dump($idx_keywords);exit();unset($sp);}else{$keywords=$keyword;}$inquery="INSERT INTO `dede_search_keywords`(`keyword`,`spwords`,`count`,`result`,`lasttime`)VALUES ('".addslashes($keyword)."', '".addslashes($keywords)."', '1', '0', '".time()."'); ";$this->dsql->ExecuteNoneQuery($inquery);}else{$this->dsql->ExecuteNoneQuery("UPDATE `dede_search_keywords` SET count=count+1,lasttime='".time()."' WHERE keyword='".addslashes($keyword)."'; ");$keywords=$row['spwords'];}return$keywords;}

最后,我们清空下数据表dede_search_keywords,重新构建检索分词结果。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航