我有一個40MB(在這種情況下內存太大)我想要做的字符串列表「開始」查詢來提取匹配。任何人都知道這個數據結構很好?現有os操作系統實現的獎勵點數。如果事物已經存在,我會願意犧牲「開始於」完全匹配。基於磁盤的刻錄機聽起來很理想。超快速「開始」從磁盤查詢
2
A
回答
2
它看起來像你需要像這樣:http://en.wikipedia.org/wiki/Trie
在Java中的實現可以發現here,雖然它不是基於磁盤的。我會繼續尋找:/
有用的論文:Trie methods for text and spatial data on secondary storage,B-tries for disk-based string management
編輯:我碰到這也許可能是有用的:MG4J: Managing Gigabytes for Java™
1
不能提出任何現有的庫,但我處理類似問題之前。如果您不打算動態修改列表,並且可以對文件中的字符串進行排序(用於二進制搜索),這很容易。
讓我們將您的40Mb分成幾乎相同大小的1000個塊,並保留內存中每個塊的第一個字符串。這將是一個包含1000個字符串的數組。他們是有序的,因爲原始列表是有序的。
當您需要執行查詢時,可以在該數組上使用二進制搜索。這會告訴你哪個塊結果字符串在哪裏。然後,您可以從磁盤讀取該塊(大約40kb)並搜索其內容。例如,如果數組的值爲["andrew", "brian", "donald", "john"]
,並且您搜索前綴"cris"
,那麼您知道所有的Cristophers和Cristians都在第二個塊中。
相關問題
- 1. 快速從磁盤加載UITableViewCell圖像
- 2. Windows,打開原始磁盤
- 3. cassandra磁盤增長速度更快
- 4. 快速寫入int []到磁盤?
- 5. MySQL查詢在磁盤上
- 6. Azure磁盤速度
- 7. 快速Blox。從零開始指南
- 8. docker磁盤空間增長速度超過容器的速度
- 9. 是否有更快速的方式從PowerShell中的特定目錄開始使用磁盤?
- 10. 從硬盤快速讀取
- 11. 快速PROLOG查詢
- 12. 快速查詢hbase
- 13. 快速CSS查詢
- 14. 高磁盤IO速率
- 15. 從快速查詢中捕獲錯誤
- 16. 從關係開始查詢
- 17. OpenShift超出磁盤配額
- 18. 從主屏幕快捷方式開始快速聯繫?
- 19. 用戶的Sitecore查詢/快速查詢
- 20. Sitecore 6.4快速查詢,我可以使用從查詢運行的項目開始的相對路徑嗎?
- 21. RavenDB保存到磁盤查詢
- 22. 磁盤IO與PHP中的MySQL查詢
- 23. ++從磁盤
- 24. 快速CSS字體查詢
- 25. PHP爆炸 - 快速查詢
- 26. 快速查詢參數
- 27. 如何快速查詢
- 28. iPhone快速sqlite查詢
- 29. 快速mysql查詢問題
- 30. 快速即席查詢
字符串是否有相同的長度?填充所有長度最長的一個會是一個問題? – thejh 2010-12-11 20:48:34
什麼是字符串源的結構/體系結構?它是一個40GB的行分隔文本文件?這是垃圾郵件製作嗎? ;) – pstanton 2010-12-11 20:54:57
它只有40 MB而不是GB,他們是個人條款。這基本上只是對一個術語(<40個字符)進行超快速存在檢查。我甚至可以爲此使用sql或lucene,但由於數據將是靜態的,我認爲我可以做得更好。 – ghempton 2010-12-11 21:03:59