2010-07-19 26 views
6

Estoy empezando con CouchDB y necesito un poco de ayuda.Consultas dinámicas complejas en CouchDB

Tengo un montón de datos que se enumeran al usuario en una tabla. El usuario debe poder filtrar esos datos por múltiples parámetros dinámicos.

E.g. asume una tabla con campos fecha, autor, etiquetas, is_published, title.

El usuario debería poder especificar cualquier filtro como "contiene la etiqueta 'couchdb' y es_publicado = verdadero" o "la fecha está dentro del mes pasado y el autor soy yo".

¿Cómo funcionan estas consultas en CouchDB?

Respuesta

7

Creo que la respuesta estándar para consultas complejas es usar Lucene. Quizás no es la respuesta que estabas buscando, pero Lucene tiene capacidades de filtrado más avanzadas.

Eche un vistazo a couchdb-lucene on github. También hay otra página en la wiki de couchDB sobre full text indexing.

+0

ElasticSearch rivers [desapareció] (https://www.elastic.co/blog/deprecating-rivers) por lo que el segundo enlace aquí está obsoleto, pero pero ahora hay https://github.com/logstash-plugins/ logstash-input-couchdb_changes y https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_input_plugin.html –

3

La solución lista para usar es que usted cree esas consultas antes de la mano en su (s) documento (s) de diseño. Si sientes, correcta o incorrectamente, que esto limitará a tus usuarios, sigue la sugerencia de andyuk y mira en couchdb-lucene.

Aunque sospecho que si no puede hacer lo que está buscando en unos pocos mapas/reducir consultas. Recuerde, puede emitir() más de una vez en una función de mapa.

Cuestiones relacionadas