Boolean queries can be achieved with a different index, fed from a couchdb database.
For example: http://github.com/rnewson/couchdb-lucene B. On Fri, Oct 15, 2010 at 5:29 PM, Terry Brownell <[email protected]> wrote: > Thank Mark, > > My initial hunch was CouchDB isn't particularly suited as a triple store or > running sparql type of queries .. too bad.. i was really digging the whole 2 > tier / replication thing. > > Terry > > On Fri, Oct 15, 2010 at 6:34 AM, Mark J. Reed <[email protected]> wrote: > >> On Thu, Oct 14, 2010 at 7:00 PM, Terry Brownell >> <[email protected]> wrote: >> > Hi, attempting to port my semantic network DB to CouchDB, but I'm not >> > grokking the more complicated views, and in particular passing variables. >> >> Depending on the types of query you anticipate, Couch (at least >> without Solr) might not be the best choice for this problem domain. >> In my experience it works best with canned queries that don't vary >> much; if you have a bunch of ad-hoc queries with different types of >> logic being composed on the fly, you may want to look at either adding >> Solr to the mix or switching to another storage technology like >> MongoDB. >> >> Having said that, here's how I would solve your specific problem in bare >> Couch. >> >> > Looking for a cookbook recipe for creating a view (against the documents >> > below), that... >> > >> > - Selects all documents where "isa" = "bird", that has a nemesis, and >> color >> > is a variable ie: all yellow? >> >> Create a view with a map function that emits the variable part as the >> key, but only for documents matching the non-variable criteria. For >> example, >> >> "map": "function(doc) { if (doc.nemesis && doc.isa == 'bird') { >> emit(doc.color, doc.nemesis) }}" >> >> Then query that view with ?key="yellow". >> >> You can make it more flexible by emitting a complex key consisting of >> [doc.isa, doc.color], instead of making it conditional on isa; then >> you would query for key=["bird","yellow"]. What that gains you is the >> ability not only to query for different combinations of animal and >> color, but also to use a range query to look for specific animal types >> regardless of color (e.g. startkey=["bird"]&endkey=["bird",{}] to get >> all the nemesis-having birds). But order matters; with isa first, this >> view doesn't help you if you want to query for all yellow >> nemesis-having animals whether they're a bird or not. You would have >> to construct a different view for that. >> >> -- >> Mark J. Reed <[email protected]> >> >
