2009-07-07 96 views
2

我正在搜索包含数千个文件的大型目录树中的数千个字符串。每个字符串可以出现在许多不同的文件中在c#中执行此搜索的最高性能方法是什么?我试着用findstr来启动proccessinfo(但它太痛苦了,因为它会打开每一个文件几千次)。有什么建议么?模仿c#中findstr功能的最佳方式是什么?

+0

哪个操作系统?也许使用索引服务或Windows搜索? – 2009-07-07 22:06:26

回答

2

我建议使用Lucene.NET创建一个索引文件树的小部件。一旦文档被编入索引,您便可以使用Lucene的所有功能以非常强大的方式搜索内容......而无需打开每个文件1000次! :P

不知道程序的寿命......这可能不是一次性使用场景的好主意。对于多用途场景,您需要确保您有一个随着时间的推移而更新索引的Windows服务(如果这很重要)。

一旦索引创建,这将是非常高效的!

0

您是否需要执行一次性搜索或连续按需?我会建议绑定到索引服务或实现您自己的Lucene索引。有许多Lucene索引的开源实现,基本上你只扫描一次文件并构建内容的综合索引,然后再根据预制索引进行搜索。索引生成需要一段时间,但搜索速度非常快。这适用于'网页'类型的内容和简单的短语和单词。

如果您正在尝试查找非单词/任意随机字符串,则您有不同的任务。

-Jeff

相关问题