DedeCms教程:優化DedeCMS搜索結果_DedeCms教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      由于DedeCMS搜索采用了分詞,提升了搜索智能化,但是我們發現,搜索結果并沒有變的更準確,本篇對DedeCMS的搜索進行一個優化,使它的搜索結果變的更智能、準確。

      首先需要調整搜索頁面的一個欄目關鍵詞替換,找到/plus/search.php將其中58行代碼

      <pre class="brush:php;"> 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,重新構建檢索分詞結果,我們可以通過下面頁面查看下分詞的結果:http://www.cit.cn/plus/search.php?q=cit%D0%C5%CF%A2%CD%F8&searchtype=title

      我們還會繼續對DedeCMS搜索結果進行優化。

      查看更多 DedeCms教程  織夢模板  織夢DedeCms視頻教程  織夢dedecms專題

      來源:模板無憂//所屬分類:DedeCms教程/更新時間:2013-05-15
      相關DedeCms教程