On Apr 20, 2009, at 9:51 AM, Nicolas Clairon wrote:

= Reducing to get summary =

So, we have 3 documents A (with "title1" as title) but I want to
display only one to my users.
The displayed document will show the most releval informations (the
most use description) and
all the tags. So I created a reduce function wich summaries all the 3
documents into a single one :

reduced_documentA = {
 "title":"title1",
 "description":"a document A",
 "tags":["tag1","tag2","tag3"],
 "date_creation": 1
}

Note that the reduced document took the earlier date_creation.

Hmmm... Remember that reduce results should not grow faster than log(n) for n documents. If everyone uses a different tag, that can become a problem. Of course, if you're not expecting thousands of tags, that shouldn't be a real issue.

= Displaying the reduce document =

The challenge now, is to display the reduced document by tags then by
date_creation.

That's all.

How can I do that ? If I use a map function :

 emit([doc.tag[t], doc.date_creation], doc.title);

i will have duplication.

So use

emit([doc.tag[t], doc.date_creation, doc.title], null);

No duplication.

I thought that I can user external process for that. Each time the
reduced_document
is updated, external process will store the reduced_document as
regular document in
another db (so that I can query it simplier).

The problem is, knowing when the reduced_document is updated. You could get updates when a document is inserted and then query your reduced view, to see if the reduced document changed, and if so insert it in your database again.

Wout.

Reply via email to