首页 新闻 会员 周边

文章关键字替换的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-01-22 11:05

现在有一个 字典

key 是关键字名称

value 是 关键字的链接地址

 

发一篇文章 如何高效的替换 关键字为对应的文章

并且只替换一次呢?

并且已经是处于链接中的字 不参与替换

 

这种需求很多新闻网站都用得到 不知道各位有没有好的办法!

一只老菜鸟。的主页 一只老菜鸟。 | 菜鸟二级 | 园豆:224
提问于:2013-01-21 15:44
< >
分享
最佳答案
0

按照常规匹配,把长度为M的字典中的key都枚举出来,然后从长度为N的文章中搜索关键词,找到则替换。搜索的时间复杂度是O(M*N)。替换的时间复杂度取决于字典的查找速度和匹配到关键词的个数,假设字典的时间复杂度是最理想状况O(1),要替换的关键字个数为K,那么替换的时间复杂度就是O(K),如果通过数组存储整篇文章还需要调整位置,则为O(K*N)。这样最好情况下的复杂度就是O(M*N + K*N)。再按照楼主200个关键字,一篇平常的5000字文章需要搜索1百万次。假设有10处替换项,保守估计需要5万次的操作。

这样算来,如果文章较长再加字典中关键词多,那就指数级增长。对于文章本身,可以中文分词后再匹配,会降低复杂度。对于字典,可以尝试使用其它数据结构,例如trie树等。

收获园豆:5
月窟仙人 | 菜鸟二级 |园豆:383 | 2013-01-21 23:22
其他回答(2)
0

正则是个不错的选择,

不知道你的字典里面到底有多少个key与value

如果太多,并且文章非常长的话,那还是会存在效率问题的.

收获园豆:2
只会造轮子 | 园豆:2274 (老鸟四级) | 2013-01-21 16:04

百八十条而已!其实不大

支持(0) 反对(0) 一只老菜鸟。 | 园豆:224 (菜鸟二级) | 2013-01-21 16:07

@show_show: 那应该没太大问题,试试吧.

支持(0) 反对(0) 只会造轮子 | 园豆:2274 (老鸟四级) | 2013-01-21 16:09
0

可以考虑在客户端用javascript实现吧,  很多highlight的library实现了关键字高亮,  使用其中的逻辑, 根据字典替换高亮成为链接。字典则可以从server端使用json传过去。

收获园豆:1
gunsmoke | 园豆:3592 (老鸟四级) | 2013-01-22 06:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册