zoukankan      html  css  js  c++  java
  • dedecms文档长尾关键词,根据频率先替换长尾关键词再替换主关键词

    问题:在使用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)

  • 相关阅读:
    Web负载均衡的几种实现方式
    DNS负载均衡
    NoSQL开篇——为什么要使用NoSQL
    mySQL优化 my.ini 配置说明
    mysql性能优化-慢查询分析、优化索引和配置
    MySQL性能优化的最佳20+条经验
    IOS的UIPickerView 和UIDatePicker
    IOS的KVC
    IOS中的通知NSNotification
    IOS对话框UIAlertView
  • 原文地址:https://www.cnblogs.com/hongfei/p/9507711.html
Copyright © 2011-2022 走看看