NEAR non-leaf subqueries

Jean-Francois Dockes jf at dockes.org
Wed Jan 4 06:29:58 GMT 2017


Olly Betts writes:
 > On Thu, Dec 29, 2016 at 07:21:41PM +0100, Jean-Francois Dockes wrote:
 > > Xapian 1.2 supports a query like:
 > > 
 > >    (A OR B) NEAR (C OR D)
 > > 
 > > and distributes the factors to create something like:
 > > 
 > >     (A NEAR 2 C) OR (B NEAR 2 C) OR (B NEAR 2 C) OR (A NEAR 2 C)
 > > 
 > > Xapian 1.4 rejects such a query with the error message.
 > > 
 > >     OP_NEAR and OP_PHRASE only currently support leaf subqueries
 > > 
 > > Because Recoll expands the terms to their stem siblings at query time, its
 > > NEAR queries are affected by the change (no stemming is used with PHRASE
 > > queries, so these are unaffected).
 > > 
 > > Of course, it would be possible to effect the distribution at the
 > > application level, but, before I get into this, I would like to know if
 > > there is a plan to restore the 1.2 behaviour, or if the new one is
 > > permanent ?
 > > 
 > > I saw https://trac.xapian.org/ticket/508, but it is rather inconclusive as
 > > to the future plans.
 > 
 > The plan is that this should be supported (see the title of the ticket,
 > and also note the "currently" in the exception message).
 > 
 > The query internals were completely rewritten between 1.2 and 1.4, which
 > is why the old support is gone.
 > 
 > The old approach is excessively inefficient so personally I'm not keen to
 > spend time recreating that - I'd rather we implement this "properly", and
 > also make sure that it works in a non-surprising way (which blindly
 > distributing operators doesn't always achieve, as noted in the ticket
 > comments).
 > 
 > The ticket has a patch which attempts to handle the OR case (which seems
 > to be the part you actually care about) but this suffers from issues with
 > object lifetimes which get a bit involved in the details.  Since there
 > wasn't a working patch when we got to making the hard decisions about
 > which tickets to bump to get 1.4.0 out, and since addressing this
 > shouldn't require ABI changes, it got bumped.

Thank you for this answer.

I need to choose between three approaches:

 - Implement support at the application level.
 - Shift back to 1.2 
 - Just wait for 1.4.x

I'd rather go back to 1.2 than used a patched 1.4 by the way.

This all depends on your expected schedule (I guess that this would have
been a better term than 'plan', which is indeed described in the ticket). I
am not asking for anything beyond information here. Do you have any idea of
the very approximate time when the change might be implemented ?

Cheers,

jf



More information about the Xapian-discuss mailing list