use*_*099 4 .net c# search dictionary large-data
我正在实现一种搜索(TF-IDF),其中每个单词的计算分数与所有被搜索的文档成比例.我有100GB的文件要搜索.
如果我使用1GB文件,我会使用:
Dictionary<string, List<Document>>
Run Code Online (Sandbox Code Playgroud)
..这string是单词,List<Document>是按顺序排列的所有文件,包含该单词.这不会扩大规模.我使用的是Dictionary<>因为查找时间是O(1)(理论上).
我想要的解决方案是一个SQLServer数据库,其中的单词列在表中,相关的List对象存储为序列化.我担心的是,List<>每次读取数据库并重建都会非常低效.
我在这方向走错了吗?使用庞大词典的常规解决方案是什么?
你是对的,说使用a List效率低,平均来说List会实现线性输出(O(n)).
就个人而言,我会使用Concurrent Dictionary保证的O(1).在我参与的一个项目中,我正在处理大型文件100MB的文本文件,我发现Concurrent Dictionary可以充分排序和搜索信息,每秒完成估计的10,000条给予或记录.
看看这个整齐的备忘单.对于Big-Oh算法,它为最佳和最差情况提供了一些简洁的细节.在处理大量数据集时,保持概念Abstraction和记忆非常重要Decomposition.
抽象集中于最重要的元素 - 忽略不相关的细节
只存储重要的信息,我非常怀疑你需要一个完整的1GB文件才能在内存中.
分解分而治之
确保运行应用程序的桌面具有良好的数据库延迟.我建议只在内存中存储你需要的东西,并使用LINQ只检索你需要的确切信息,一旦你掌握了与你的任务相关的信息......你就可以进一步过滤它.
| 归档时间: |
|
| 查看次数: |
3836 次 |
| 最近记录: |