QQ:41426277的博客

c++,delphi

博客园 首页 新随笔 联系 管理

信息也是越来越多,字符串匹配算法起着非常 重要的作用。

 有kmp算法,索引法,还有什么拖拉机法等等。

本人就参考了索引法。索引法主要将关键词排序好,然后再匹配。

测试结果:2000条关键词,110K文章,匹配140毫秒。

              21万条关键词,110K文章,匹配9.845秒。

以上结果是查出总共有多少个关键词出现,如果只是查是否有那测试结果:匹配16毫秒就OK了。

程序演试:

http://files.cnblogs.com/mmpc/%E6%B5%B7%E9%87%8F%E5%85%B3%E9%94%AE%E8%AF%8D%E5%8C%B9%E9%85%8D.rar

感谢Sumtec的回复,本人修改了部份索引,从9.845秒提高到1:688秒。

已改的程序演试:

https://files.cnblogs.com/mmpc/%E6%B5%B7%E9%87%8F%E5%85%B3%E9%94%AE%E8%AF%8D%E5%8C%B9%E9%85%8D%E6%94%B9.rar

 

-------------------------------------------

程序再次提高。110K只用了656毫秒

提高的程序演试:

https://files.cnblogs.com/mmpc/%E6%B5%B7%E9%87%8F%E5%85%B3%E9%94%AE%E8%AF%8D%E5%8C%B9%E9%85%8D%E6%8F%90.rar

 

程序再度提高。110K只用了359毫秒,包含关系的用了203毫秒

包含关系是这样的:文章出现...不值钱...  关键词有“不值”,“值钱”,“不值钱”,那程序只找“不值钱”这关键词 

提高的程序演试:

https://files.cnblogs.com/mmpc/%E6%B5%B7%E9%87%8F%E5%85%B3%E9%94%AE%E8%AF%8D%E5%8C%B9%E9%85%8D%E5%86%8D%E6%8F%90.rar

 

昨晚想到关键词结合2分查找,理论应该从最新的21万关键词110K文章203毫秒进入100毫秒以内的大关。有空再写一个演示程序给大家。

posted on 2011-05-16 11:42  41426277  阅读(4151)  评论(6编辑  收藏  举报