提升DedeCMS检索結果

因为DedeCMS检索选用了词性标注,提高了检索智能化化,可是大家发觉,检索結果并沒有变的更准确,这篇对DedeCMS的检索开展一个提升,使它的检索結果变的更智能化、准确。

最先必须调节检索网页页面的一个频道重要词更换,寻找/将在其中58行编码:

 foreach($typeArr as $id= $typename)
 $keywordn = str_replace($typename, , $keyword);
 if($keyword != $keywordn)
 {
改动为:

 foreach($typeArr as $id= $typename)
 //$keywordn = str_replace($typename, , $keyword);
 $keywordn = $keyword;
 if($keyword != $keywordn)
 {
随后,大家再调节下词性标注查找的类,寻找/include/arc.searchview.class.php,寻找function GetKeywords($keyword)这一类的方式,更换为:

 function GetKeywords($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 = new SplitWord($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_keywords as $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,再次搭建查找词性标注結果,大家能够根据下边网页页面查询下词性标注的結果:?q=cit%D0%C5%CF%A2%CD%F8 searchtype=title

大家还会继续再次对DedeCMS检索結果开展提升。