【发布时间】:2014-01-02 16:46:00
【问题描述】:
我正在实现一种搜索类型 (TF-IDF),其中每个单词的计算分数都与正在搜索的所有文档成正比。我有 100GB 的文档要搜索。
如果我使用 1GB 的文档,我会使用:
Dictionary<string, List<Document>>
..其中string 是单词,List<Document> 是所有文档,按顺序排列,包含该单词。这不会扩大规模。我使用的是Dictionary<>,因为查找时间是 O(1)(理论上)。
我想要的解决方案是一个 SQLServer 数据库,其中单词被列在一个表中,相关的 List 对象被序列化存储。我担心的是每次读取数据库并重建到List<> 效率会非常低。
我是不是走错了方向?处理庞大字典的正常解决方案是什么?
【问题讨论】:
-
我会考虑使用磁盘支持的存储机制:请参阅各种 Hash/Hierarchial “NoSQL”选项。
-
我会让其他人回答你的问题,但我建议使用 MongoDB 来解决这个问题。它的创建正是考虑到了这种类型的东西。它有一个 .net 驱动程序,它的工作方式与实体框架大致相同。
标签: c# .net dictionary search large-data