dedecms文书档案长尾关键词,依照频率先替换长尾关键词再交替主关键词

题目:在动用dedecms的文档关键词替换效率时,会造成交叉替换

如:

长尾重点词1:男生喝金丝皇菊有何便宜? 

长尾重视词2:喝金丝皇菊有怎么样便宜?

主关键词3:金丝皇菊

利用系统暗中同意的效用时,在轮换主关键词的时候,会将地方已经替换好的长尾关键词中的“金丝皇菊”也交替掉,从而破坏了本来面目标长尾珍视词锚文本。

本文化教育我们:dedecms文书档案关键词维护之首要性词出现反复,只给出现的第四个加链接的

最终效果能够看下八岩茶业官网的内页小说:

金丝皇菊_福鼎黄茶_普洱茶http://www.bayantea.cn

 

赶尽杀绝思路:

1.先就要替换的主要性词替换到类似:

关键词1:'#####0#####'

关键词2:'#####2#####'

关键词3:'#####3#####'

再进行以上替换操作的时候,我们需要保存关键词所对应的锚文本,如:

'#####0#####' --> 关键词1的锚文本

'#####1#####' --> 关键词2的锚文本

'#####2#####' --> 关键词3的锚文本
等全部替换完毕后,我们最后再恢复回来
这里,我们主要修改:include/arc.archives.class.php 文件
修改部分如下:

 

//高亮专用, 替换多次是可能不能达到最多次
function _highlight($string, $words, $result, $pre) {
    global $cfg_replace_num;
    //     if (version_compare(PHP_VERSION, '5.5.0', '>='))
    //     {
    //         $string = $string[0];
    //         $pre = $pre[0];
    //     }

    //修改 Start
    $replaced_array = array();
    $replaced_tiems = 0;
    //修改 End

    $string = str_replace('\"', '"', $string);
    if ($cfg_replace_num > 0) {
        foreach ($words as $key => $word) {
            if ($GLOBALS['replaced'][$word] == 1) {
                continue;
            }
            //修改 Start
            $replace_string = '#####' . $replaced_tiems . '#####';
            $replaced_array[$replace_string] = $result[$key];
            $string = preg_replace("#" . preg_quote($word) . "#", $replace_string, $string, $cfg_replace_num);
            $replaced_tiems+= 1;
            //修改  End
            //             $string = preg_replace("#".preg_quote($word)."#", $result[$key], $string, $cfg_replace_num);
            if (strpos($string, $word) !== FALSE) {
                $GLOBALS['replaced'][$word] = 1;
            }
        }
        //修改 Start
        foreach ($replaced_array as $k => $v) {
            $string = str_ireplace($k, $v, $string);
        }
        //修改  End

    } else {
        $string = str_replace($words, $result, $string);
    }
    return $pre . $string;
}

留意:那里我们要求在后台修改文书档案关键词的效能,暗中认可是 频率高的预先替换,频率低的后替换

举例来说:当作品中冒出了九十八遍台历时,按法定的法则,他会给九十七个台历都抬高链接的。dedecms那怎么办?

版权

原创小说,转发请大名鼎鼎出处:dedecms文书档案长尾关键词,依据频率先替换长尾关键词再交替主关键词https://www.cnblogs.com/hongfei/p/9507711.html)

焚薮而田办法(记得先备份)

① 、打开目录include中的arc.archivew.class.PHP

找到function
ReplaceKeyword($kw,$body)代码,在最上面。然后径直到最上边。替换以下的代码

function ReplaceKeyword($kw,$body)
{
global $cfg_cmspath;
$maxkey = 5;
$kws = explode(“,”,trim($kw)); //以分好为间隔符
$i=0;
$karr = $kaarr = $GLOBALS[‘replaced’] = array();

//暂且屏蔽超链接
$body = preg_replace(“/()(.*)(<)(\/a>)/isU”,
‘\\1-]-\\4-[-\\6’, $body);

global $dsql;
$query=”SELECT * FROM zmb_keywords WHERE rpurl<>” and sta=1
ORDER BY length(keyword)desc”;
$dsql->SetQuery($query);
$dsql->Execute();
while($row = $dsql->GetArray())
{
$key = trim($row[‘keyword’]);
$key_url=trim($row[‘rpurl’]);
$karr[] = $key;
$kaarr[] = “$key“;
}
foreach ($karr as $key => $word)
{

$body =
preg_replace(“/(^|>)([^<]+)(?=<|$)/sUe”,”_highlight(‘\\2’,
\$karr[$key], \$kaarr[$key], ‘\\1’)”, $body);
//echo $body.”
“;

//恢复生机超链接
$body = preg_replace(“/()/isU”,’\\1>\\3<\\4′, $body);
//临时屏蔽超链接
$body = preg_replace(“/()(.*)(<)(\/a>)/isU”,
‘\\1-]-\\4-[-\\6’, $body);

}

//恢复生机超链接
$body = preg_replace(“/()/isU”,’\\1>\\3<\\4′, $body);
return $body;
}

}//End Archives

//高亮专用, 替换数次是唯恐不能够达到规定的标准最频仍
function _highlight($string, $words, $result, $pre)
{
global $cfg_replace_num;
$string = str_replace(‘\”‘, ‘”‘, $string);

if($GLOBALS[‘replaced’][$words] == 1)
{
return $pre.$string;
}

if($cfg_replace_num > 0)
{
$string = preg_replace(“/”.preg_quote($words).”/”, $result, $string,
$cfg_replace_num);
if(strpos($string, $words) !== false)
{
$GLOBALS[‘replaced’][$words] = 1;
//echo $words;
}

}
else
{
$string = str_replace($words, $result, $string);
}
return $pre.$string;
}

② 、进入DEDE后台,系统-系统基本参数-其余选项的末段一行。文书档案内容一律关键词替换次数(0为全套替换),修改为1。

三 、进入文书档案关键词维护,维护供给加入链接的机要词和链接即可。重新生成,效果就出来了。

 

 

相关链接:http://www.zhimengba.com/jsjc/79.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图