在我們的桌面應用程序中,我們使用inverted index實現了一個簡單的搜索引擎。應用程序的內存中搜索索引佔用太多內存 - 有什麼建議嗎?
不幸的是,我們的一些用戶的數據集可能會變得很大,例如,在創建倒排索引之前佔用大約1GB的內存。倒排索引本身佔用大量內存,幾乎與索引數據一樣多(另一個1GB的RAM)。
很明顯,這會造成內存不足錯誤的問題,因爲每個應用程序的32位Windows內存限制爲2GB內存,或者配置較少的計算機的用戶難以應付內存需求。當每個對象進行處理,使得所述的applicationObject的密鑰串和描述字存儲在倒排索引數據加載期間
Dictionary<string, List<ApplicationObject>>
,這是創建:
我們的倒排索引被存儲爲一個。
所以,我的問題是:是否有可能更有效地存儲空間明智的搜索索引?也許需要使用不同的結構或戰略?或者可以創建一種CompressedDictionary?因爲它存儲了很多字符串,所以我期望它具有高度的可壓縮性。
如果可能的話,我想避免這種情況,因爲它可以更簡單地擁有內存中的搜索索引。但也許這是不可能的,但它似乎應該*對我可能。 – RickL 2008-10-21 15:44:43