On Jun 28, 2010, at 1:51 PM, [email protected] wrote: > I find it a really great idea. If it can be set per design doc, of course.
Exactly. It should't be a huge patch if anyone wants to take it on. :) Chris > > Mickael > > ----- Mail Original ----- > De: "J Chris Anderson" <[email protected]> > À: [email protected] > Envoyé: Lundi 28 Juin 2010 21h34:16 GMT +01:00 Amsterdam / Berlin / Berne / > Rome / Stockholm / Vienne > Objet: Re: selecting a random subset of a view > > > On Jun 28, 2010, at 12:28 PM, [email protected] wrote: > >> It's an error to do this if I read the doc correctly, because shows and >> lists functions should be idempotent. It's specified in the wiki. >> > > It would be fine to have a config option to suppress the Etags on show and > list. Then you'd have no risk of improperly caching the output here. For the > time being, you can probably configure an http proxy to ignore and strip the > etags. > > Chris > >> Mickael >> >> ----- Mail Original ----- >> De: "Jan Prieser" <[email protected]> >> À: [email protected] >> Envoyé: Lundi 28 Juin 2010 18h37:38 GMT +01:00 Amsterdam / Berlin / Berne / >> Rome / Stockholm / Vienne >> Objet: Re: selecting a random subset of a view >> >> hi Mickael, >> >> i've had the same problem and used the lists-feature from couch. >> >> my list-function looks like this: >> >> function(head,req) { >> function shuffle(ary) { >> function randOrd(){ return Math.round(Math.random()) - 0.5; } >> ary.sort( randOrd ); >> } >> body={}; >> eval('body='+req.body); >> out = head; >> out.rows = []; >> if(out.total_rows > out.offset) { >> while (row = getRow()) { >> out.rows.push(row); >> } >> } >> shuffle(out.rows); >> if (body && body.rlimit) { >> out.rows = out.rows.slice(-body.rlimit); >> } >> return toJSON(out) + '\n'; >> } >> >> maybe you could use a range with startkey and endkey, if the number of >> rows is to big. I didn't test the performance with bigger datasets. >> >> >> Am 28.06.2010 15:29, schrieb [email protected]: >>> Hello couchers, >>> >>> how would you do to select a random subset of a view result (a simple view >>> with map only). >>> >>> Example (I don't write the full view response array for clarity) >>> >>> When called normally, my view returns : >>> >>> { >>> ... >>> rows: [ >>> {id: aa1}, >>> {id: aa2}, >>> {id: aa3}, >>> {id: aa4}, >>> {id: aa5}, >>> {id: aa6}, >>> {id: aa7}, >>> {id: aa8}, >>> {id: aa9} >>> ] >>> } >>> >>> And I want only three of those rows, randomly chosen. So I launch the magic >>> "get three random rows" feature, and it gives me : >>> >>> { >>> ... >>> rows: [ >>> {id: aa5}, >>> {id: aa3}, >>> {id: aa6} >>> ] >>> } >>> >>> The second time I launch the same magic "get three random rows" I got: >>> { >>> ... >>> rows: [ >>> {id: aa7}, >>> {id: aa1}, >>> {id: aa5} >>> ] >>> } >>> >>> Thanks for your advices >>> >>> Mickael >
