2010-07-19 23 views
6

Ich beginne mit CouchDB und brauche ein wenig Hilfe.Komplexe dynamische Abfragen in CouchDB

Ich habe eine ganze Menge von Daten, die dem Benutzer in einer Tabelle aufgeführt ist. Der Benutzer sollte in der Lage sein, diese Daten nach mehreren dynamischen Parametern zu filtern.

z. nehme eine Tabelle mit Feldern date, author, tags, is_published, title an.

Der Benutzer sollte in der Lage sein, jeden Filter wie "Enthält Tag 'Couchdb' und is_published = true" oder "Datum ist im letzten Monat und der Autor ist ich" zu spezifizieren.

Wie funktionieren solche Abfragen in CouchDB?

Antwort

7

Ich denke, die Standardantwort für komplexe Abfragen ist die Verwendung von Lucene. Vielleicht nicht die Antwort, nach der Sie gesucht haben, aber Lucene verfügt über erweiterte Filterfunktionen.

Werfen Sie einen Blick auf couchdb-lucene on github. Es gibt auch eine andere Seite auf dem CouchDB Wiki über full text indexing.

+0

ElasticSearch Flüsse [ging weg] (https://www.elastic.co/blog/depreating-rivers) so der zweite Link hier ist veraltet, aber aber es gibt jetzt https://github.com/logstash-plugins/ logstash-input-couchdb_changes und https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_input_plugin.html –

3

Die Out-of-the-Box-Lösung besteht darin, dass Sie diese Abfragen für sie erstellen, bevor Sie Ihre Konstruktionsdokumente einreichen. Wenn Sie sich richtig oder falsch fühlen, dass dies Ihre Benutzer einschränken wird, dann folgen Sie dem Vorschlag von andyuk und schauen Sie sich couchdb-lucene an.

Obwohl ich misstrauisch wäre, wenn Sie in ein paar Map/Reduce-Abfragen nicht das tun könnten, wonach Sie suchen. Denken Sie daran, dass Sie() in einer Kartenfunktion mehr als einmal ausgeben können.

Verwandte Themen