在C#中有效地在目录中搜索关键字

时间:2012-11-05 13:53:24

标签: c# file search keyword

我正在考虑一种最有效的方法来搜索一个充满文本文件的目录(可能是每个约150行的2000个文件)。如果我只是搜索一个关键字,那么性能不会是一个问题,但在我的应用程序中,我希望能够在以后搜索不同的关键字,可能是多次。因此,每次迭代整个文件集似乎都很耗时。将所有内容存储在内存中似乎也非常昂贵。

最好的方法是什么?我无法访问SQL数据库或类似的东西,因此我无法暂时将内容转储到数据库中并定期搜索;它只是一个普通的Windows应用程序。

我能想到的最原始的方法是将所有文件转储到一个巨大的XML文件中并搜索 - 而不是每次关键字搜索发生时遍历目录中的所有文件。但即便如此,这可能会耗费大量时间?

我会事先知道目录名,所以我可以预先处理内容 - 如果这可能有助于优化。

欢迎任何建议,谢谢。

2 个答案:

答案 0 :(得分:3)

为什么不使用从C#调用的cmd实用程序?

DOS中的findstr实用程序可以满足您的需求并且效率很高:http://technet.microsoft.com/en-us/library/bb490907.aspx

如何从C#中调用它:How To: Execute command line in C#, get STD OUT results

祝你好运!

答案 1 :(得分:0)

正如“L.B”所述,您可以使用Lucene.net创建倒排索引。它是来自java库的.Net实现。 Lucene on apache.org

This是一个很好的例子。