当前位置: 洪哥笔记 > Java > 自动添加超链接

 

自动添加超链接


关键词

java 超链接 SEO

摘要

鄙人也曾做过一段时间的站长,增加网站内链确是做好网站SEO的一个重要环节,但经常我们发软文的时候,都要手动去添加关键字的内链,这样操作起来比较繁琐。
鄙人也曾做过一段时间的站长,增加网站内链确是做好网站SEO的一个重要环节,但经常我们发软文的时候,都要手动去添加关键字的内链,这样操作起来比较繁琐。
如果能实现发表文章时自动添加超链接,编辑工作将会有很大的提升。这是在网上收集来的一个自动添加超链接的贴子。词库采用hashtable数据结构(最终实现是HashMap)。
下面是代码的实现:十万的词库,一万字的文章,自动标注在本机上测试只需要100ms,个人觉得效率还不错。
Java代码   
public class test {  
    public static void main(String[] args) {  
        Map<String,String> dict = createDict();  
        StringBuilder content = new StringBuilder("我想要一辆宝马的宝马X3或者是奥迪的奥迪A4L,如果是比亚迪F0或者吉利的车送给我也不要。");  
        for(int i = 0;i < 500;i++){  
            content.append("我想要一辆宝马的宝马X3或者是奥迪的奥迪A4L,如果是比亚迪F0或者吉利的车送给我也不要。");  
        }  
        long startTime = System.currentTimeMillis();  
        String result = autoReplace(dict, content.toString());   
        long endTime = System.currentTimeMillis();  
        System.out.println("方法被执行,花费时间" + (endTime - startTime) + "ms");  
        System.out.println(result);  
    }  
    /**
     *  
     * @Description: 将文章中的关键词用其他一些词来替换,比如加上a标签超链接等  
     * @param map 替换词库
     * @param content 文章内容
     * @return    参数说明  替换后的文章内容
     */  
    private static String autoReplace(Map<String, String> map, String content) {  
        //得到词库的Key最大长度,以便确定切割的最大长度  
        Set<String> keys = map.keySet();  
        int keylength = 0;  
        for (String k : keys) {  
            keylength = keylength < k.length() ? k.length() : keylength;  
        }  
          
        StringBuilder result = new StringBuilder("");  
          
        for (int i = 0; i < content.length() - keylength; i++) {  
            StringBuilder key = new StringBuilder("");  
            StringBuilder temp = new StringBuilder("");  
            boolean flag = false;  
            for (int j = keylength; j >= 1; j--) {  
                key = new StringBuilder(content.substring(i, i + j));  
                if (map.get(key.toString()) != null) {  
                    temp.append(map.get(key.toString()));  
                    i = i + j - 1;  
                    flag = true;  
                    break;  
                }  
            }  
            if (!flag) {  
                temp.append(content.charAt(i));  
            }  
            result.append(temp);  
        }  
        return result.append(content.substring(content.length() - keylength))  
                .toString();  
    }  
      
    /**
     *  
     * @Description: 创建一个词库  
     */  
    private static Map<String,String> createDict(){  
        Map<String, String> map = new HashMap<>();  
        map.put("宝马", "<a>宝马</a>");  
        map.put("宝马X3", "<a>宝马X3</a>");  
        map.put("奥迪", "<a>奥迪</a>");  
        map.put("奥迪A4L", "<a>奥迪A4L</a>");  
        map.put("比亚迪F0", "<a>比亚迪F0</a>");  
        map.put("吉利", "<a>吉利</a>");  
        for (Integer i = 0; i < 100000; i++) {  
            map.put(i.toString(), "<a>吉利</a>");  
        }  
        return map;  
    }  
}  

 

要饭二维码

洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权

本文属于“洪哥笔记”原创文章,转载请注明来源地址:自动添加超链接:http://www.splaybow.com/post/java-addhyperlink.html

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D

« 使用keytool生成私钥 Java中如何把整形int转换成字符串String类型 »

相关文章:

JSP动态包含  (2014/6/28 8:32:24)

JSP静态包含  (2014/6/27 8:24:43)

Java参数化查询无法得到可更新的记录集  (2014/6/26 9:29:00)

jsp包含文件与被包含文件的contentType必须完全一致  (2014/6/25 9:19:33)

Java可以定义元素个数为0的数组  (2014/6/23 11:24:23)

Java中XML的构造与输出  (2014/3/29 11:51:08)

Java中如何把整形int转换成字符串String类型  (2014/3/28 11:31:28)

自动添加超链接  (2014/1/17 9:43:23)

使用keytool生成私钥  (2014/1/2 20:58:48)

Java递归算法示例  (2013/12/29 19:19:50)