我有一個大型的數據集合,在這種情況下,想象一下所有包含文件路徑的80,000+數組String
。子串索引許多類似的字符串
作爲文件路徑,這意味着它們的大羣組以相同的路徑開始,例如,我有超過50,000個文件從"/dataset1/subsetAA/childX/"
開始。
我想允許自由文本搜索這些路徑。現在我做一個簡單的斷言,看起來像這樣:
foreach(String term in terms)
if(path.IndexOf(term, StringComparison.OrdinalIgnoreCase) == -1)
return false;
return true;
我保存的搜索結果,因爲它們可以鍵入,所以你越鍵入它變得更快,但是最初的幾個搜索(例如「f
」>「fo
」>「foo
」)在快速機器上可能需要3或4秒。
我想建立一個子串索引,消除了我需要使用IndexOf
,最好是利用通用路徑來減少索引大小,我不想消耗太多的內存。
這有幫助,但是如何從任何節點搜索Trie?例如如果「foo」和「foz」在Trie中,我怎樣才能搜索「oz」,而無需首先爲每個「o」詳盡搜索樹,或者這是不可避免的? (儘管我可以低效地使用'Dictionary>'來查找起點)。有什麼想法嗎? –
Dai
2013-03-14 06:43:43
嘗試不設計爲從任何節點啓動。更多的思考問題,我很喜歡dasblinkenlight的答案:) – Patashu 2013-03-14 07:44:52