怎么高效率的判断一大段文章中是否有关键字

a_taoge 2015-05-05 05:06:14
数据库设计为
关键字(如:傻X)、状态(如:1:禁止关键字 2:替换关键字)

我写了一个独立的方法, 先查询出关键字表中的所有关键字
然后一个个遍历看是否在字符串中包含
如果存在关键字并且状态为1,则return -1 判断为包含禁止关键字
如果存在关键字并且状态为2,则把字符串中的关键字替换为*

但是现在这样判断,性能很差,怎么提高性能速度呢?哪位大神帮忙解答下
...全文
316 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xge 2015-05-07
  • 打赏
  • 举报
回复
6楼是正道,低成本高收益。不过应该会快1000倍而不是100倍(楼主说了关键字有1000个)。文本很短时反正已经很快了,慢一点没关系。
qzyf1992 2015-05-07
  • 打赏
  • 举报
回复
如果我记得没错的话Lucene.net 就是干这个事的
失落的神庙 2015-05-07
  • 打赏
  • 举报
回复
文章1 关键词集合2 循环遍历文章1中每个字符 去关键词集合2中找 匹配就开始匹配后面的 比如文章: 今天 天气不错 关键词集合 天气 不错 遍历到天时候 今天的天 第二个无法匹配。就放弃 天气的天。匹配 就修改。 不知道这样会不会快点。估计也快不了多少。 也可以直接正则全部替换。
  • 打赏
  • 举报
回复
这个真的没有什么好办法
铛铛 2015-05-07
  • 打赏
  • 举报
回复
直接indexof吧,没捷径 数据库就用like
  • 打赏
  • 举报
回复
唯一能够提高效率的,估计就是多线程了……
xuzuning 2015-05-05
  • 打赏
  • 举报
回复
从已知关键字构造出一颗 trie 树(网上有现成的代码) 对文章做一趟扫描,能在 trie 树中匹配到的字组合就是
  • 打赏
  • 举报
回复
然后你拿着每一个单词到你的数据库中去匹配 --> 然后你拿着每一个单词到你的 hash 表中去匹配
  • 打赏
  • 举报
回复
没有办法。 除非文章本身已经被分词了,然后你拿着每一个单词到你的数据库中去匹配,这样有可能让你的大文章的判断速度提高100倍。 但时很显然,当文章并不长时,这样反而更慢。
zwbdabc 2015-05-05
  • 打赏
  • 举报
回复
linq 并行计算,或者多线程。
a_taoge 2015-05-05
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
其实是拿着字典里的每个关键字去这一大堆文字里找,看能不能找到 不管用什么算法,效率也是高不起来.
总有个办法能够有快速一点的吧.......
於黾 2015-05-05
  • 打赏
  • 举报
回复
其实是拿着字典里的每个关键字去这一大堆文字里找,看能不能找到 不管用什么算法,效率也是高不起来.
於黾 2015-05-05
  • 打赏
  • 举报
回复
这效率高不了 你总要每个字,每个词的去跟字典比对
a_taoge 2015-05-05
  • 打赏
  • 举报
回复
关键字表大约有几千个关键字

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧