[Xapian-devel] GSoC xapian node binding thoughts

Olly Betts olly at survex.com
Wed May 30 02:19:57 BST 2012


On Mon, May 28, 2012 at 10:23:12PM -0700, Liam wrote:
> On Mon, May 28, 2012 at 2:44 PM, Olly Betts <olly at survex.com> wrote:
> > XOR can also take any number of subqueries.  And on trunk, OP_FILTER,
> > OP_AND_NOT, and OP_AND_MAYBE can also take any number of subqueries
> > (with OP(A, B, C) being interpreted as OP(OP(A, B), C)
> 
> XOR is missing from the online docs for Query(Query::op, Iterator,
> Iterator, termcount)

Thanks for pointing that out - it's been wrong for a while then (since
r3194, 2001-02-26):

    * Some modifications to XOR handling: should now behave like OR and 
      AND - doesn't need to be binary.  (*untested*) 

Now fixed on the 1.2 branch.  It was also missing that ELITE_SET can
take any number of subqueries in that comment, though it clearly says
it can elsewhere, and ELITE_SET would be rather useless if it only took
2 subqueries...

> We can include support for the other ops you mention and leave it commented
> out for now.

I would strongly recommend developing against trunk at this point
anyway.  You don't want to be wrapping anything which has been
deprecated in the C++ API, and it would be good to have wrappers done
for new features.  Once you have trunk wrapped, tweaking the wrappers to
work against 1.2 should be a simple matter of disabling a few parts.

> > Also, it would be nice to support a mixture of strings and query objects
> > as the subqueries (like we do in most of the dynamically typed languages).
> 
> You can include a term query in the list by writing {tname:'string'}, but
> certainly we could let 'string' be a shorthand for that.

It's largely syntactic sugar, but even syntactic sugar is still sweet.

Cheers,
    Olly



More information about the Xapian-devel mailing list