Xapian::Termiterator is not working the way it used to with perl

Jim jim at fayettedigital.com
Sat Sep 11 21:41:30 BST 2021


I update my 1.4.7 xapian to the latest 1.4.18.  One of my apps stopped 
working.  I traced it to this bit of code:

         my $eterm = $enq->get_matching_terms_end($id);
         my $bterm = $enq->get_matching_terms_begin($id);
         for(my $xit=$bterm;$xit != $eterm;++$xit) {

             my $foo ="$xit";
             print LOG ref $foo;
             my $re = Data::Dumper->new([$xit]);
             print LOG "xit ".$re->Dump;
             $re = Data::Dumper->new([$foo]);
             print LOG "foo ".$re->Dump;
             flush LOG;

             $foo =~s/^Z//;
             $foo =~s/^A//;

In the past, $foo was a string containing a term from the document.  It 
is not any longer and I don't know how to get the term from a TermIterator.

Here's the log:

xit $VAR1 = bless( {}, 'Xapian::TermIterator' );
foo $VAR1 = 'Xapian::TermIterator=HASH(0x55c91b34a4e8)';

I saw this at 
https://xapian.org/docs/bindings/perl/Search/Xapian/TermIterator.html

  This class also overloads eq, ne, ==, !=, and "" (stringification).  
I'm guessing that stringification is working.

Thanks for any guidance.

Also I noticed that the docs refer to Search::Xapian:: but the examples 
in the bindings directory use just Xapian::.

Why the change?

Jim.





More information about the Xapian-discuss mailing list