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

发布时间:2019-03-01  栏目:Python  评论:0 Comments

难点:在运用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地图