为了账号安全,请及时绑定邮箱和手机立即绑定

文章关键字替换的问题

文章关键字替换的问题

心有法竹 2018-07-23 09:06:16
现在有一个 字典key 是关键字名称value 是 关键字的链接地址 发一篇文章 如何高效的替换 关键字为对应的文章并且只替换一次呢?并且已经是处于链接中的字 不参与替换 这种需求很多新闻网站都用得到 不知道各位有没有好的办法!
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

按照常规匹配,把长度为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树等。


查看完整回答
反对 回复 2018-07-25
?
ITMISS

TA贡献1871条经验 获得超8个赞

正则是个不错的选择,

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

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


查看完整回答
反对 回复 2018-07-25
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

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

查看完整回答
反对 回复 2018-07-25
  • 3 回答
  • 0 关注
  • 311 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信