Am 12.03.2010 um 20:12 schrieb Bruno Ronchetti:
> Hi Julian,
>
> I also notice that your map function emits once for every *letter* in the
> author's name.
>
> For instance having just one entry in the db:
>
> {
> "_id": "01943fed255df913c33cab5c27b3bc7e",
> "_rev": "1-8288a511edad170e8e806281d0188033",
> "author": "Karl Marx",
> "title": "Das Kapital"
> }
>
>
> yields following results:
>
> {"rows":[
> {"key":null,"value":9}
> ]}
>
> and, using the group=true clause for increased clarity, yields:
>
> {"rows":[
> {"key":" ","value":1},
> {"key":"a","value":2},
> {"key":"K","value":1},
> {"key":"l","value":1},
> {"key":"M","value":1},
> {"key":"r","value":2},
> {"key":"x","value":1}
> ]}
> This could be another factor contributing to the slowness of your view.
>
> Cheers. Bruno.
Oh, doc.author is an array. I should’ve mentioned that or simplified the
version I’ve posted. Sorry!
Cheers,
Julian
>
>
>
>
> On 12/mar/2010, at 14.10, Julian Stahnke wrote:
>
>> Hello!
>>
>> I have a problem with a view being slow, even though it’s indexed and cached
>> and so on. I have database of books (–120,000 documents) and a map/reduce
>> function that counts how many books there are per author. I’m then calling
>> the view with ?group=true to get the list. I’m neither emitting nor
>> outputting any actual documents, only the counts. This results in an output
>> of about 78,000 key/value pairs that look like the following: {"key":"Albert
>> Kapr","value":3}.
>>
>> Now, even when the view is indexed and cached, it still takes 60 seconds to
>> receive the output, using PHP’s cURL functions, the browser, whatever I’ve
>> tried. Getting the same output served from a static file takes only a
>> fraction of a second.
>>
>> When I set limit=100, it’s basically instantaneous. I want to sort the
>> output by value though, so I can’t really limit it or use ranges. Trying it
>> with about 7,000 books, the request takes about 5 seconds, so it seems to be
>> linear to the number of lines being output?
>>
>> I’m using CouchDB 0.10.1 (the one that’s in homebrew) on a 2006 MacBook Pro.
>>
>> Am I doing anything wrong, or should this really take so long? I wasn’t able
>> to find any information about this—only about indexing being slow, but that
>> doesn’t seem to be my problem.
>>
>> Maybe I should also mention that I’m an interaction design student who used
>> to be a front-end dev, but not a ‘real’ programmer.
>>
>> Thanks for any help!
>>
>> Best,
>> Julian
>>
>>
>> For reference, the map function:
>>
>> function (doc)
>> {
>> if (doc.author) {
>> for (i = 0; i < doc.author.length; i++) {
>> emit(doc.author[i], 1);
>> }
>> } else {
>> emit(null, 1);
>> }
>> }
>>
>> The reduce function:
>>
>> function (keys, values, rereduce)
>> {
>> return sum(values);
>> }
>>
>> Some sample output:
>>
>> {"rows":[
>> {"key":null,"value":1542},
>> {"key":"... Hans Arp ... /Konzept: Hans Christian Tavel .../","value":1},
>> ---more rows---
>> {"key":"Zwi Erich Kurzweil","value":1}
>> ]}
>