问题:在使用dedecms的文档关键词替换功能时,会造成交叉替换

如:

长尾关键词1:男人喝金丝皇菊有什么好处?

长尾关键词2:喝金丝皇菊有什么好处?

主关键词3:金丝皇菊

使用系统默认的功能时,在替换主关键词的时候,会将上面已经替换好的长尾关键词中的“金丝皇菊”也替换掉,从而破坏了原有的长尾关键词锚文本。

最终效果可以看下八岩茶业官网的内页文章:

金丝皇菊_福鼎白茶_普洱茶: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文档长尾关键词,根据频率先替换长尾关键词再替换主关键词(https://www.cnblogs.com/hongfei/p/9507711.html)

dedecms文档长尾关键词,根据频率先替换长尾关键词再替换主关键词的更多相关文章

  1. DedeCms文档关键词替换,优先替换长尾关键词

    本文教大家:dedecms文档关键词维护之关键词出现多次,只给出现的第一个加链接的 举例:当文章中出现了一百次台历时,按官方的原理,他会给一百个台历都加上链接的.dedecms这如何是好? 解决方法( ...

  2. 解决织梦dedecms文档关键字(自动内链)php5.5以上失效的问题 urf-8版本的

    找到include/arc.archives.class 在里面需要修改两次地方 在1230行 // 这里可能会有错误 if (version_compare(PHP_VERSION, '5.5.0' ...

  3. dedecms 模板文件不存在,无法解析文档的终极各种解决办法

    dedecms 模板文件不存在,无法解析文档"的终极各种解决办法 方法一:[此对应喜欢把模板文件使用".html"的格式,] /include/arc.archives. ...

  4. 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  5. 6.JAVA基础复习——JAVA中文档注释与帮助文档的生成

    java中的文档注释:用于说明该类的功能作用方便他人使用关键词前需要加@符 用于类的注释 @author name 作者 @version v1.0 版本 …… 用于函数的注释 @param para ...

  6. 编辑技巧之如何跟PDF文档添加贝茨编号

    除了office办公软件,pdf文档现在使用的频率也便多了,不论是工作或是学习,阅读都用阅读器打开就行了,可是如果想要修改.编辑那只用阅读器是无法进行编辑的,其实PDF文件的编辑还是很方便,使用PDF ...

  7. ES系列四、ES6.3常用api之文档类api

    1.Index API: 创建并建立索引 PUT twitter/tweet/ { "user" : "kimchy", "post_date&quo ...

  8. 【Elasticsearch学习】文档搜索全过程

    在ES执行分布式搜索时,分布式搜索操作需要分散到所有相关分片,若一个索引有3个主分片,每个主分片有一个副本分片,那么搜索请求会在这6个分片中随机选择3个分片,这3个分片有可能是主分片也可能是副本分片, ...

  9. 【Windows编程】系列第十一篇:多文档界面框架

    前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典 ...

随机推荐

  1. js 选择指定区域

    /根据id 选择特定区域function SelectRange(id) { var div = document.getElementById(id); var controlRange; if ( ...

  2. Filezilla server配置FTP服务器中的各种问题与解决方法

    转至;https://www.jb51.net/article/122171.htm 安装文件以及补丁下载 公司很多资料需要通过ftp上传,那么就需要配置一个FTP服务器,找了一台Windows服务器 ...

  3. dom4j移除节点不成功

    在使用dom4j的时候想移除xml节点,经常使用remove来移除节点,通过整个文档或者根节点删除某一个子节点,但如果子节点不是儿子节点,在dom4j中就无法删除.在dom4j中移除节点必须使用父节点 ...

  4. Transform(变换)—Y轴lable内容旋转

    <!DOCTYPE html> <html> <head> <style> div{ border:1px solid; } .bb{ position ...

  5. day 34

    1 .内容回顾 #__author : 'liuyang' #date : 2019/4/17 0017 上午 9:01 # 利大于弊,则做之 # 会死于斯,则不去 # 2个 人 晚上 5个题 面试题 ...

  6. RPA基础

    RPA是什么 软件机器人 RPA是基于计算机操作系统的工作界面,自动识别UI,完成预先设定的工作流程的软件机器人 ​ 全自动 自动的操作整个工作流程,用软件的方式代替人力,完成大量的重复性的手工操作, ...

  7. 组件内守卫beforeRouteEnter和beforeRouteLeave

    beforeRouteEnter用法和其他守卫差不多. 有个注意的地方就是beforeRouteEnter不能用this获取组件内收据. 在next()方法内存入vm这个参数,获取组件内数据. bef ...

  8. 第47章:MongoDB-用户管理

    ①用户管理 在MongoDB里面默认情况下只要是进行连接都可以不使用用户名与密码,因为要想让其起作用,则必须具备以下两个条件: ·条件一:服务器启动的时候打开授权认证: ·条件二:需要配置用户名和密码 ...

  9. cp/tar/用c语言编写程序 实现cp命令的效果

    1.cp (拷贝) 已存在文件路径  要拷贝的文件路径 实现cp命令的代码如下: #include <stdio.h> //因为要在命令中得到两个路径,所以要用到main函数的两个参数 i ...

  10. idea jetty 配置

    一.jetty 网址下载地:https://www.eclipse.org/jetty/ 1.如下图红色箭头--> 点击Downloads 下载 2.选择最新版 .ZIP 下载 3.选择安装路径 ...