我有一个java程序,它读取PDF文件的所有单词。我用页面编号将数据保存在数据库(couchDB)中。现在我想编写一个地图和一个缩减函数,它将每个单词与出现单词的页码一起列出,但是如果单词在页面上出现多次,我只需要一个条目。结果应该是一个带有单词的行,第二行带有一个用逗号分隔的列表(用逗号分隔的字符串)。每个带pagenumber的单词在couchDB中是一个单独的文档。 如何使用map-reduce函数(筛选页面编号的相同条目)执行此操作? 感谢您的帮助。CouchDB中的map-reduce函数
2
A
回答
4
当然有不止一种方法。我会去做一些简单的事情。比方说你的文档看起来有点像这样:
{ 'type': 'word-index', 'word': 'Great', 'page_number': 45 }
这是找到第45页现在您的视图索引由视图函数创建上的字“大”的结果:
function map(doc) {
if (doc.type == 'word-index') {
emit([doc.word, doc.page_number], null);
}
}
对于减少部分只是使用“_count”内置。
现在要在您的书中获得单词“Great”的所有出现的列表,只需使用startkey = [“Great”]和endkey = [“Great”,{}]查询您的视图。现在,结果看起来就会有点像:
["Great", 45], 4
["Great", 70], 7
这意味着世界“的”出现45页的4倍和70页的7倍,您可以提取您的逗号分隔你从它需要的清单。发生次数是奖金。
- 编辑 -
您还可以在查询中使用group_level = 2。如果你不这样做,查询的结果只会是单一行,并且你的所有文档都被计数。
相关问题
- 1. CouchDB - 将MapReduce结果传递到第二个MapReduce函数
- 2. CouchDB MapReduce查询关系数据
- 3. CouchDB,MapReduce:查询时间片
- 4. MapReduce中的函数组合
- 5. CouchDB的Reduce函数
- 6. mapreduce在couchDB中获得MAX结果后mapreduce
- 7. 使用hadoop + mapreduce处理couchdb中的数据
- 8. MapReduce函数MongoDB NodeJs
- 9. CouchDB日期函数
- 10. CouchDB的减少函数值
- 11. CouchDB/PouchDB将值传递给MapReduce
- 12. MapReduce:地图函数中的聚合?
- 13. MongoDB中的MapReduce函数返回空值
- 14. 如何恰当地使用couchdb来正确地链接mapreduce函数或组
- 15. CouchDB中的JQuery TypeError OpenDoc函数
- 16. CouchDB中的过滤和更新函数?
- 17. 在CouchDB的MapReduce中选择属于用户的n个元素
- 18. 我可以使用mapreduce查询CouchDB中的视图吗?
- 19. 在R中调试mapreduce()函数
- 20. 在MongoDB中替换()MapReduce映射函数
- 21. 在php中使用mapreduce函数限制?
- 22. 在PHPillow for CouchDB中减少函数
- 23. MongoDB的MapReduce的映射函数
- 24. CouchDB的 - 变量的map函数
- 25. 写MapReduce的函数来计算
- 26. Couchdb-python:如何在map_reduce函数中调用函数?
- 27. 如何使用python的iterview函数couchdb
- 28. 如何使用CouchDB的reduce()函数?
- 29. 如何使用couchdb的javascript函数
- 30. 什么是CouchDB中的减少函数的参数?
感谢您快速回答。我必须在稍后测试它,但如果我想要一个列表:伟大的45,70,234.伟大的字应该只列出一次。并且该函数应该为数据库中的所有单词(文档)执行此操作。 – user2447116
如何使用reduce函数来管理多个页面编号? – user2447116
嗯,我不知道Java,或者couchdb的api绑定。我的观点是,当你查询这样的视图时,你会得到键值对的列表。你的密钥的形式是[“World”,page_number]。要获取列表,您只需将所有行的键与第一个元素相同并提取第二个元素。由于减少了它,它的独特性。 我刚刚意识到的还有一件事,您还需要使用group_level = 2来查询您的查询结果。如果你不这样做,你会在结果中得到一行。 –