热词冲突的解决

问题----〉

 

      在做一个热词系统的时候遇到这样一个问题,如“程序员的修养“是一个热词,“程序员“是一个热词,当我们在以 “《程序员的修养》是程序员的必修课 ”作简单的查找替换的时候会发生什么问题呢?

 

             1.把“程序员的修养“找到,做替换,如:

 

                      <a href="http://blog.csdn.net">程序员的修养</a>

 

             2.把程序员找到作替换,结果是:

 

                    《<a href="http://blog.csdn.net"><a href="http://blog.csdn.net/nirvana52">程序员<a>的修养</a>》是<a href="http://blog.csdn.net/nirvana52">程序员</a>必修课

 

            经过试验,发现了html是最小匹配,即,“程序员“有了连接而“程序员的修养”的连接被屏蔽了。

 

问题的解决------〉

 

         1.我们可以把热词作一个权重的排序,可以是最大匹配,也可以是最小匹配。把文章内的热词替换成为一个标签;

 

                  用最大匹配为例:

 

                         $0->"程序员的修养";

                         $1->"程序员";

 

                        程序员的修养用$0替换则结果是:

 

                           第一次查找替换:

 

                             《$0》是程序员的必修课;

 

                           第二次查找替换:

 

                               《$0》是$1的必修课;

 

          2.之后我们将$0,$1替换回去,这样就不会出现简单替换的问题了;

 

问题的总结------------->

 

        在写代码的时候,最好把各个元素都抽象出来,这样更灵活,更容易控制。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值