Consulta em uma função de redução de mapa do MongoDB
Eu transmitai e salvei cerca de 250 mil tweets no MongoDB e aqui, eu estou recuperando, como você pode ver, baseado em uma palavra, ou palavra-chave, presente no tweet.
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("TwitterData");
DBCollection collection = db.getCollection("publicTweets");
BasicDBObject fields = new BasicDBObject().append("tweet", 1).append("_id", 0);
BasicDBObject query = new BasicDBObject("tweet", new BasicDBObject("$regex", "autobiography"));
DBCursor cur=collection.find(query,fields);
O que eu gostaria de fazer é usar o Map-Reduce e basear-se na palavra-chave, categorizá-la e passá-la para a função de redução para contar o número de tweets em cada categoria, tipo o que você pode verAqui. No exemplo, ele está contando o número de páginas, pois é um número simples. Eu quero fazer algo como:
"if (this.tweet.contains("kword1")) "+
"category = 'kword1 tweets'; " +
"else if (this.tweet.contains("kword2")) " +
"category = 'kword2 tweets';
e use a função reduce para obter a contagem, assim como no programa de amostra.
Eu sei que a sintaxe está incorreta, mas é basicamente o que eu gostaria de fazer. Existe alguma maneira de alcançá-lo? Obrigado!
PS: Ah, e estou codificando em Java. Então a sintaxe do Java seria muito apreciada. Obrigado!
A saída do código postado é algo assim:
{ "tweet" : "An autobiography is a book that reveals nothing bad about its writer except his memory."}
{ "tweet" : "I refuse to read anything that's not real the only thing I've read since biff books is Jordan's autobiography #lol"}
{ "tweet" : "well we've had the 2012 publication of Ashley's Good Books, I predict 2013 will be seeing an autobiography ;)"}
Isto, claro, é para todos os tweets com a palavra "autobiografia". O que eu gostaria é usar isso na função map, categorizá-lo como um "autobiography tweet" (e outras palavras-chave também), e então enviá-lo para a função reduce para contar tudo e retornar o número de tweets com a palavra em isto.
Algo como:
{"_id" : "Autobiography Tweets" , "value" : { "publicTweets" : 3.0}}
{"_id" : "Biography Tweets" , "value" : { "publicTweets" : 15.0}}