2010-07-19 19 views
6

Sto iniziando con CouchDB e ho bisogno di un piccolo aiuto.Domande dinamiche complesse in CouchDB

Ho un sacco di dati che sono elencati all'utente in una tabella. L'utente dovrebbe essere in grado di filtrare i dati in base a più parametri dinamici.

E.g. assumere una tabella con campi data, autore, tag, is_published, titolo.

L'utente dovrebbe essere in grado di specificare qualsiasi filtro come "Contiene tag 'couchdb' e is_published = true" o "la data è entro il mese scorso e l'autore sono io".

Come funzionano tali query in CouchDB?

risposta

7

Penso che la risposta standard per query complesse sia l'utilizzo di Lucene. Forse non è la risposta che stavi cercando, ma Lucene ha capacità di filtraggio più avanzate.

Dai uno sguardo allo couchdb-lucene on github. C'è anche un'altra pagina sul wiki di couchDB su full text indexing.

+0

Fiumi ElasticSearch [andato via] (https://www.elastic.co/blog/deprecating-rivers) così il secondo link qui è obsoleto, ma ma ora c'è https://github.com/logstash-plugins/ logstash-input-couchdb_changes e https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_input_plugin.html –

3

La soluzione pronta per l'uso è quella di creare queste query per loro in anticipo nei documenti di progettazione. Se ritieni, correttamente o erroneamente, che ciò possa limitare i tuoi utenti, segui il suggerimento di andyuk e guarda couchdb-lucene.

Anche se sarei sospettoso se non si potesse fare ciò che si sta cercando in poche mappe/ridurre le query. Ricorda, puoi emettere() più di una volta in una funzione mappa.