優(yōu)化DedeCMS搜索結(jié)果

字號(hào):


    首先需要調(diào)整搜索頁(yè)面的一個(gè)欄目關(guān)鍵詞替換,找到/plus/search.php將其中58行代碼:
    <pre> 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)
    {
    然后,我們?cè)僬{(diào)整下分詞檢索的類,找到/include/arc.searchview.class.php,
    找到function GetKeywords($keyword)這個(gè)類的方法,替換為:
    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;
    }