![]() |
1
3
我不明白为什么你觉得数据库不是一个合适的解决方案。您可能只有大约100000行,表的小规模意味着它可以完全存储在内存中。使这个词成为主键,查找速度将非常快。 |
![]() |
2
6
字数统计是 MapReduce 程序(来自维基百科的伪代码):
我是 不 说这是 这个 这样做的方法,但如果您需要一些扩展性很好的东西,当不同的单词的数量超过了一台机器上可用的内存时,它绝对是一个选项。只要您能够保持在内存限制以下,更新哈希表的简单循环就可以做到这一点。 |
![]() |
3
2
如果性能是您的主要目标,那么您只能在RAM中使用基于哈希或基于trie的结构。假设您仍然进行一些有用的筛选(不计算非字词字符的字词),则表中的最大字数将在10到10的范围内(即使涉及多种语言),因此这很容易放入当前PC的内存中(并完全避免所有数据库处理)。 另一方面,如果您必须自己实现哈希表的详细信息,那么就有更多的代码可以出错(尽管数据库人员希望将代码调整到最大)。因此,即使在您自己的实现中有一些小细节,也可能再次导致性能损失。 因此,这一困境清楚地向我们展示了优化的第一条和第二条规则: 1。不要过早优化。 2。在优化之前测量。 :) |
![]() |
4
1
使用A hash table . |
![]() |
5
1
你的解决方案听起来不错。如果缓存基于最近的使用计数,那么它将保存最频繁单词的单词计数。(单词分布类似于前100个单词覆盖了90%的单词实例),因此您不需要非常大的缓存。 如果您想提高性能并删除数据库,可以将单词编码为trie,并将使用计数存储在叶节点中。在Essense中,如果您对Word文本进行索引,那么数据库就是这样做的,因此您实际上只是在避免数据库延迟。如果这是目标,那么还有其他避免数据库延迟的方法,例如使用并行查找。 |
![]() |
ecology · 基于R中随机生成数集的子集列 2 年前 |
![]() |
Krischk · 使用python;获取列表中错误项的索引[已关闭] 3 年前 |
![]() |
Mohona · 对一维数组元素的迭代在几次迭代后给出了索引错误 3 年前 |
![]() |
X3VI · 熊猫-重命名_轴后无法按预期工作-为什么? 3 年前 |
![]() |
dam · 为什么这是我使用索引的输出?什么是索引?[闭门] 3 年前 |
![]() |
Sahil Panhalkar · 显示索引超出范围的列表更新语句 3 年前 |
![]() |
SpaceBallz · 比较嵌套列表中的值 3 年前 |
![]() |
startresse · 自定义type\u索引顺序,无boost 3 年前 |