2009-07-07 137 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

相關問題