sqlserver中有一张非法过滤词库表,表中5000+条数据,后台用C#,如何以最快速度对一篇文章进行非法过滤。

要求,最快速度判断文章中是否有非法过滤词,越快越好... 要求,最快速度判断文章中是否有非法过滤词,越快越好 展开
 我来答
魔法软糖™
2016-12-07 · TA获得超过838个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:149万
展开全部

先把词库读到内存中的字典:以第一个字符为Key的字典,以List<string>为Value(考虑到可能有词汇第一个字符是相同的)

Dictionary<char, List<String>> 词库 = new Dictionary<char, List<String>>();

再用 System.IO.FileStream类 读取文件。

先读取一行string line = FileStream1.ReadLine()

然后一个一个字符Read,判断是不是ContainsKey('字符'),如果含有,再把这个字符开头的列表中完整字符串读出来,然后进行比对

foreach (string 字符串 in 列表)

{

int 开始位置 = 当前字符在行中位置

int 搜索长度 = 要比较的字符串长度

使用line.IndexOf(字符串, 开始位置, 搜索长度) > 0 或者使用

line.Contains(字符串) //哪种效率高要试试才知道

这样只需要把文件扫描一次,每次调用哈希表来判断字符,时间复杂度O(1),匹配时搜索当前行的小范围,性能比多次扫描大大提升。

}


我只提供思路,具体代码的自己写把。

如满意,请采纳,谢谢。

A邓布利多
2016-12-07 · 超过10用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:18.4万
展开全部
用sql命令吗 能给个例子吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
讨人厌的字66
2016-12-07 · TA获得超过4728个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:249万
展开全部
这又是什么逻辑呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式