Я новичок в Couchdb, и в настоящее время я застрял в небольшой (вероятно...) проблеме с использованием функции map-reduce в CouchDB, и поскольку я не могу найти соответствующую информацию в Интернете. Я хотел бы попросить помощи здесь для себя.
В основном сценарий таков: я использую функцию карты для подсчета количества раз определенного слова, которое появляется в определенном документе. И сделайте излучение просто так:
emit(word,1)
Таким образом, если мне нужно получить значение суммы каждого слова, чтобы выяснить, сколько раз каждое слово появляется во всех документах. Я мог бы просто написать функцию сокращения следующим образом:
function(key, values, rereduce)
{
return sum(values);
}
Но мне действительно нужно возвращать только сумму (значения), превышающую 3000 (чтобы узнать слово, которое появляется более 3000 раз во всех документах). Поэтому я пытаюсь сделать так:
function(key, values, rereduce)
{
if(sum(values)>3000)
return sum(values);
}
Но таким образом все слова, встречающиеся менее 3000 раз, все равно будут возвращены, но со значением null. Я знаю, что это потому, что функция сокращения должна что-то возвращать, поэтому, когда оператор «если» не соответствует, вместо этого он должен возвращать ноль. Но есть ли кто-нибудь, кто мог бы дать мне полезное предложение по этому поводу - как вернуть сумму (значения), которая соответствует только определенным условиям...