Я пытаюсь создать коллекцию подсчетов совпадений для обработанного простого текста в Википедии. Я использую Java API для MongoDB, и моя структура документа довольно проста:
{w: word1 # word2, c: count}
У меня есть индекс "w", и я обновляю счетчики для каждой пары, с которой сталкиваюсь, используя запрос:
coll2.update(new BasicDBObject("w",word), new BasicDBObject("$inc",new BasicDBObject("c",1)),true,false);
Есть ли какие-либо другие способы оптимизации, которые я мог бы сделать, чтобы ускорить процесс подсчета слов? Сейчас у меня около 27 миллионов пар слов, и из терминала «mongod» я вижу бесконечный поток запросов, от 100 до 1000 мс (который я считаю «медленным»). Благодаря моему Google'у подход MapReduce кажется обычным способом решения проблем с большим количеством слов. Но я не очень разбираюсь в MapReduce и, исходя из своего базового понимания, мне понадобится более одной машины (которой у меня нет).
Спасибо,
Anthony