4

我试图想出最有效的方法来搜索一个充满文本文件的目录(可能有 2000 个文件,每个文件大约 150 行)以查找关键字。如果我只是搜索一个关键字,那么性能就不是什么大问题,但是在我的应用程序中,我希望能够在以后搜索不同的关键字,可能会搜索多次。因此,每次迭代整个文件集合似乎很耗时。并且将所有内容存储在内存中似乎也相当昂贵。

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

我能想到的最原始的方法是将所有文件转储到一个巨大的 XML 文件中并进行搜索——而不是每次发生关键字搜索时都遍历目录中的所有文件。但即使这样似乎也很耗时?

我会提前知道目录名称,所以我可以对内容进行预处理——如果这可能有助于优化的话。

欢迎任何建议,谢谢。

4

2 回答 2

3

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

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

如何从 C# 调用它:如何:在 C# 中执行命令行,获取 STD OUT 结果

祝你好运!

于 2012-11-05T13:56:40.813 回答
0

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

是一个如何做的小例子。

于 2012-11-05T14:16:13.550 回答