`
liulanghan110
  • 浏览: 1063958 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

文章自动添加超链接

    博客分类:
  • JAVA
阅读更多

在网上可以发现,很多文章中的关键词会有超链接,超链接的实现可以由编辑手动添加,但这样工作量大。如果能实现发表文章时自动添加超链接,编辑工作将会有很大的提升。

 

词库采用hashtable数据结构(最终实现是HashMap)。

 

下面是代码的实现:十万的词库,一万字的文章,自动标注在本机上测试只需要100ms,个人觉得效率还不错。

 

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 newContent = new StringBuilder(content);
        for (int i = 0; i < keylength; i++) {
            newContent.append(" ");
        }
        StringBuilder result ;
         
        for (int i = 0; i < newContent.length() - keylength; i++) {
            StringBuilder key = new StringBuilder("");
            StringBuilder temp = new StringBuilder("");
            boolean flag = false;
            for (int j = keylength; j >= 1; j--) {
                key = new StringBuilder(newContent.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(newContent.charAt(i));
            }
            result.append(temp);
        }
        return result.append(newContent.substring(newContent.length() - keylength))
                .toString().trim();
    }
	
	/**
	 * 
	 * @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;
	}
}

 

1
0
分享到:
评论

相关推荐

    WordPress给文章图片自动添加链接的方法

    本文实例讲述了WordPress给文章图片自动添加链接的方法。分享给大家供大家参考。具体分析如下: 我们会看到有很多的网站我们点击图片就会进入当前文件连接了,下面我来给使用wordpress博客的同学也来介绍此种方法,...

    赛维网络生成html文章系统

    1、文章可以在后台进行自动分页(通过插入[PAGE]标签进行自动分页) 2、文章内部链接功能:通过添加的专题关键字在文章内容中自动识别,生成超链接 3、文章的HTML编辑功能:可视化编辑

    PJBlog转Wordpress工具

    4、自动转移文章内容(智能过滤草稿箱文章) 4.1、每篇文章对应的分类自动转移 4.2、每篇文章的评论自动转移 4.3、自动替换部分PJ特殊代码,如[color=Red]等为wp的代码 4.4、自动处理[img]download.asp?id=xxx[/img]...

    文章管理系统

    1.[新增]后台新增文章时作者栏 加入{%称呼%}自动替换为当前后台用户昵称 2.[改进]后台分页数太多,提交成功后要提示下 3.[新增]后台引导页加入生成首页静态页判断 4.[改进]后台留言管理,对留言内容和用户名加入...

    纸飞机DiscuZ专用采集器 v1.3.zip

    纸飞机DiscuZ专用采集器用于文章采集、分页采集、采集内容过滤超链接、自动下载帖内图片、内容关键字过滤替换、内容尾部自定义添加内容等。 纸飞机DiscuZ专用采集器应用平台:纸飞机DiscuZ专用采集器可以运行于...

    高校网站(带管理系统)源码 UniversityWebsiteWithManagementSystem.rar

    在文章列编页点击上方的“添加文章”超链接可添加文章。在新的页面中输入文章的标题、简介、缩略图、文章内容等(如图4-2所示),点击“提交”即可发表。 4.3文章编辑和删除 在文章列表页点击对应文章后面的...

    企业WAP2.0网站管理系统

     ●自动获取数据库的文章内容,并且过滤HTML元素,文章自动进行分页,分页样式和字数均可自定(通过编辑前台代码)。  ●支持“上下篇文章”功能,可以通过此进行阅读文章,而不必返回列表目录。  ●字符替换...

    仿最新小刀网程序源码

    可自动根据超链接生成下载按钮,不需要手动填写网盘名称,会自动识别。(方法:在后台文章编辑页面点击右上角第2行向左数第3个小锁链按钮插入链接,或直接在HTML代码模式插入链接代码即可,会根据具体的网盘自动生成...

    PHPLJY v1.0.0

    改进多附件模版, 多选附件避免了重复的附件 增加文章系统后台对所有分类的文章管理与添加, 并增强了管理易用性 增加分页跳转 对短消息群发与节日送礼功能进行了优化, 并排除了可能存在的问题 ...

    小刀娱乐网源码(带手机版) v3.61qq技术网站源码 QQ技术网全站源码

    可自动根据超链接生成下载按钮,不需要手动填写网盘名称,会自动识别。(方法:在后台文章编辑页面点击右上角第2行向左数第3个小锁链按钮插入链接,或直接在HTML代码模式插入链接代码即可,会根据具体的网盘自动生成...

    phpljy v1.1.0

    改进多附件模版, 多选附件避免了重复的附件 增加文章系统后台对所有分类的文章管理与添加, 并增强了管理易用性 增加分页跳转 对短消息群发与节日送礼功能进行了优化, 并排除了可能存在的问题 ...

    小刀娱乐网源码2018版源码

    可自动根据超链接生成下载按钮,不需要手动填写网盘名称,会自动识别。(方法:在后台文章编辑页面点击右上角第2行向左数第3个小锁链按钮插入链接,或直接在HTML代码模式插入链接代码即可,会根据具体的网盘自动生成...

    WP主题:HotNewspro 2.72

    默认调用四篇最新文章,缩略图支持WP特色图像、添加自定义栏目、自动获取文章中图片、随机缩略图等,也可以切换到Key模式,分别添加自定义栏目,名称:hot和image,调用指定文章及缩略图,缩略图大小236×155px具体...

    PHPWind 3.0.1 Beta

    完全支持 RSS, 与 WAP 手机浏览 增加文章系统后台对所有分类的文章管理与添加, 并增强了管理易用性 增加分页跳转 对短消息群发与节日送礼功能进行了优化, 并排除了可能存在的问题 增加是否拥有权限...

    EMLOG 论坛模式主题 MFLT完善版

    此款主题为蓝优原创,标签自动内链,自带高亮代码转换,在线压缩格式化等,总体来说还不错。因此博主我下载了下来看看,发现emlog6.0.1和emlog5.3.1导航排版乱了,因此开始修修改改,最后适配了。 二、主题改动 1...

    Foxit Advanced PDF Editor 3.05中文版(免KEY).rar

    可以插入页码,调整段落属性,丰富的工具集,包括抓手工具,放大工具及对象工具,旋转及文本工具,文本增强工具,文本转换工具,超链接工具及文章工具。可添加注释及绘图。安装说明:安装后不要运行Foxit Advanced...

    小刀娱乐网源码2019版

    前台所有页面代码经过优化,加载速度更快,页面体积更小前台页面没有iframe、frame等影响搜索引擎抓取与收录的代码,对搜索引擎十分友好可自动根据超链接生成下载按钮,不需要手动填写网盘名称,会自动识别。...

    PHP实现删除非站内外部链接实例代码

    一般在做网站系统的时候,出于优化等因素的考虑需要再添加文章的时候删除掉不是本站的链接,对于这一要求可以通过让PHP处理下文章内容,来达到文章外部链接的自动删除的效果。 本实例代码主要参考织梦CMS内容管理...

    67CMS简单企业网站管理系统 v1.1 Build 20100704.zip

    1、文章、图文、下载、图集模块均为三级栏目添加功能; 2、使用所见即所得文字编辑器kindeditor,可以轻松实现文字、图片、动画的添加与排版; 3、内置多语种扩展接口,并可以通过添加不同语种信息来显示相关信息...

Global site tag (gtag.js) - Google Analytics