2010-07-19 5 views
6

나는 CouchDB로 시작하고 조금 도움이 필요하다.CouchDB에서 복잡한 동적 쿼리

나는 테이블에 사용자에게 나열된 많은 데이터를 가지고 있습니다. 사용자는 여러 동적 매개 변수로 해당 데이터를 필터링 할 수 있어야합니다.

예. 필드 date, author, tags, is_published, title이있는 테이블을 가정합니다.

사용자는 "contains tag 'couchdb'및 is_published = true"또는 "날짜가 지난 달 내에 있고 작성자가 나"와 같은 필터를 지정할 수 있어야합니다.

이러한 쿼리는 CouchDB에서 어떻게 작동합니까?

답변

7

복잡한 쿼리에 대한 표준 답변은 Lucene을 사용하는 것입니다. 아마도 당신이 찾고 있던 답변이 아니지만 Lucene은 고급 필터링 기능을 가지고 있습니다.

couchdb-lucene on github을 살펴보십시오. couchDB wiki에 full text indexing에 대한 또 다른 페이지가 있습니다.

+0

ElasticSearch 강이 [갔다] (https://www.elastic.co/blog/deprecating-rivers) 두 번째 링크가 더 이상 사용되지 않지만 https://github.com/logstash-plugins/입니다. logstash-input-couchdb_changes 및 https://www.elastic.co/guide/en/logstash/current/_how_to_write_a_logstash_input_plugin.html –

3

즉시 사용 가능한 솔루션은 설계 문서를 작성하기 전에 해당 쿼리를 작성하는 것입니다. 이 문제가 귀하의 사용자를 제한 할 것이라는 점을 올바르게 또는 부정확하게 생각한다면 andyuk의 제안에 따라 couchdb-lucene을 살펴보십시오.

지도/축소 쿼리에서 찾고자하는 것을 할 수 없다면 의심 스럽지만 말입니다. 맵 함수에서 두 번 이상 emit() 할 수 있음을 기억하십시오.