我正在尝试为已处理的纯文本Wikipedia转储创建共现计数集合。我正在使用MongoDB的Java API,我的文档结构非常简单:
{w:word1#word2,c:count}
我有一个关于“w”的索引,并且正在使用查询更新我遇到的每一对的计数:
coll2.update(new BasicDBObject("w",word), new BasicDBObject("$inc",new BasicDBObject("c",1)),true,false);
我是否可以采取其他任何优化来加快字数统计过程?我目前大约有2700万个单词对,而且从“mongod”终端我看到无休止的查询流在100-1000毫秒之间(我认为是“慢”)。通过我的Google,MapReduce方法似乎是解决大字数问题的常用方法。但是我对MapReduce知之甚少,从我的基本理解来看,我需要不止一台机器(我没有)。
谢谢, 安东尼
答案 0 :(得分:0)
理论上你的方法很好,只要你完全匹配“w”字段。 如果使用正则表达式或其他,则可能无法有效使用索引。 您可以使用explain()运行等效的find来检查索引行为。
还要确保“w”上的整个索引可以适合RAM以及大多数文档。 如果mongo需要从磁盘读取更新文档,它将变得非常慢,具体取决于您的磁盘。
潜在的解决方法: