2010-10-08 111 views
0

我想弄清楚什麼樣的二進制文件可以支持我的反向索引需求。假設我有一個文件,可以識別唯一的ID,每個文件可以有360個固定值,範圍爲0-65535。是這樣的:反向索引二進制格式

Document0:[1,10,123,...] // 360個值

文檔1:[1,10,345,...] // 360個值

現在,倒排索引是很容易 - 我可以創造的,它包含文件的每個可能值列表,查詢可以快速地執行,例如:

1:Document0文檔1]

10:Document0文檔1 ]

123:Document0]

345:[文檔1]

但我想保存在某種文件(二進制),並具有查詢快速能力,而且要添加新文檔的大量文件沒有重新創建整個結構。

現在我正在努力如何組織該文件。如果我想快速訪問,我需要固定長度的文檔數組來做文件查找和讀取。但固定大小意味着我將有很多文檔列表的空白空間。我唯一的想法是擁有某種分類系統,每個值可以屬於特定大小的桶,例如有大小爲1,2,4,8,16,32,...(或類似的東西)的桶,我需要某種類型的標題,它會指出桶的起始位置和桶的大小。這個想法將優化商店的大小,但我又遇到了添加新文檔的問題。

任何想法如何組織我的'逆指數'文件?

最好。

回答

0

我會去找65536個文件,每個文件都有ID。如果你想對文件系統進行溫和的處理,把它分成256個文件,每個文件有256個文件。

00\00.idx 
00\01.idx 
.. 
FF\FF.idx 
0

聽起來不錯。我正在讀取速度非常快,寫在另一方面速度較慢 - 我需要確保每個文件都有獨特的文檔(現在我有簡單的模型來存儲內存中的恆定數量的文件,並轉儲它們磁盤達到某個閾值時)。感謝您的迴應。