我在一个包含数千个文件的大型目录树中搜索数千个字符串。每个字符串可以出现在许多不同的文件中在c#中执行此搜索的最高效方法是什么?我试过proccessinfo以findstr开头(但是它很慢,因为它打开了每一个文件几千次)。有什么建议吗?
答案 0 :(得分:2)
我建议创建一个使用Lucene.NET索引文件树的小部件。一旦文档被编入索引,您就可以使用Lucene的所有功能以非常强大的方式搜索内容...而无需打开每个文件1000的时间! :P
不确定程序的生命周期......对于一次性使用场景,这可能不是一个好主意。对于多用途场景,您需要确保有一个Windows服务,随着文件随时间的变化而更新索引(如果这很重要)。
创建索引后,这将非常高效!
答案 1 :(得分:0)
您是否需要执行一次性搜索或持续按需搜索?我建议要么绑定索引服务,要么实现自己的Lucene索引。 Lucene索引有很多开源实现,基本上你只扫描一次文件并构建内容的综合索引,然后将根据预制索引进行搜索。索引生成需要一段时间,但搜索速度非常快。这适用于“网络”类型的内容以及简单的短语和单词。
如果您正在尝试查找非单词/任意随机字符串,那么您将完成不同的任务。
-Jeff