[Xapian-devel] Re: [Xapian-discuss] Fixing issue with PHP5/Windows

Olly Betts olly at survex.com
Wed Apr 4 18:47:15 BST 2007


On Wed, Apr 04, 2007 at 06:31:12PM +0100, James Aylett wrote:
> On Wed, Apr 04, 2007 at 05:55:40PM +0100, Olly Betts wrote:
> > I took a quick look now, but it all looks OK.  Seeing as this only
> > appears to be a problem when executing "join" on the result, which
> > isn't a natural thing to do, I think I'll release the tarball you've
> > tested.  It's pretty quick to roll an incremental release of the
> > bindings if we find a fix later.
> 
> Have we tested iterating through the get_matching_terms() output
> directly, as opposed to using the MSetIterator to do it internally? My
> impression was we had, and it didn't work, so it's not just a problem
> with join().

I'm not sure what you're asking (since get_matching_terms() uses
MSetIterator internally!)

But I just reread the original thread.  To summarise, this has the odd
bug under MSVC:

    $terms = join(" ", $enq->get_matching_terms($mset->get_hit(0)))

But this works:

    $hit=$mset->get_hit(0);
    $it=$enq->get_matching_terms_begin($hit);
    while (! $it->equals($enq->get_matching_terms_end($hit)))
    {
	echo $it->get_term(), ' ';
	$it->next();
    }

I thought someone had said that this worked, but I can't find where
anyone did, so perhaps I misread one of the mails before:

    @terms = $enq->get_matching_terms($mset->get_hit(0));

If that doesn't work either, this is more serious (but perhaps more
likely to be possible to track down).

It would be interesting to check that, and to try gradually changing the
code and see if/when the problem goes away.  That might offer some
insight into what's going on.  I can't test it myself, but I could talk
someone through it on IRC or IM if they need a hand.

Cheers,
    Olly



More information about the Xapian-devel mailing list