so for keys with two or more parameters, only the first parameter can be used for range selection? the 2nd and remaining keys can only be used for grouping/sorting?

the problem with having two views:
If i had two views, one for [word, doc] => count and [doc, word] => count; it would be re-doing the same word counting function twice.

I'm gonna try to compute the docs word counts and store the results in database itself.

thanks,
tommy

On Jul 19, 2009, at 7:16 PM, Paul Davis wrote:

On Sun, Jul 19, 2009 at 9:14 PM, Tommy Chheng<[email protected]> wrote:
I have a simple word count view defined as:
--------
function(doc) {
 if(doc['couchrest-type'] == 'NsfGrant'){
   var words = doc['abstract'].split(/\W+/);
   words.forEach(function(word){
     if (word.length > 1) emit([word, doc['_id']],1);
   });
 }
}

function(keys, values, rereduce) {
 return sum(values);
}
--------
where the key's first parameter is the word and the 2nd parameter is the
document_id.

so i can do a query like this to get all the documents with the word "the"
correctly.
http://localhost:5984/nsf_grants/_design/NsfGrant/_view/by_word_doc_count?startkey= ["the"]&endkey=["the",{}]&group_level=2

I'm having trouble doing queries on the 2nd parameter, how can i find all
the words in a particular document?
I tried
http://localhost:5984/nsf_grants/_design/NsfGrant/_view/by_word_doc_count?key= [null,"0808605"]&group_level=2
which gives nothing(thinking that null would match all words)
and
http://localhost:5984/nsf_grants/_design/NsfGrant/_view/by_word_doc_count?startkey= [null,"0808605"]&endkey=[{},"0808605"]&group_level=2
which gives all results. Why is this?

Thanks,
Tommy


Querying a view is asking for a slice of a sorted list. Start and end
keys delimit the range of rows returned. The solution to your problem
is to create a second view so you can query by docid.

Paul Davis

Reply via email to