我有一個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來查詢您的查詢結果。如果你不這樣做,你會在結果中得到一行。 –