[Xapian-discuss] Perl example of using termitrator?

Jim jim at fayettedigital.com
Sun Sep 30 22:35:00 BST 2007


I'm having trouble translating from C++ to perl objects.

The TermIterator class looks like to get a set of terms in a document 
you might have  C++ code like:

Enquire::TermIterator termIt =enquire->get_matching_terms_begin(id);

for(;termIt != enquire->get_matching_terms_end(id);termIt++) {
    string term = *termIt;
}

Or something similar.  However when I attempt to translate that into 
perl, I am trying:( I am working in the blind here)

    foreach my $match ( @matches ) {
        my %hit;
        my %ht;
        my $doc = $match->get_document();
        my $per = $match->get_percent();
        my $id = $match->get_docid();
        my $bterm = $enq->get_matching_terms_begin($id);
        for(my $xit=$bterm;$xit != 
$enq->get_matching_terms_end($id);$xit++) {
            my $term=$xit;
            print $term;
        }

Which doesn't really make any sense.  Xit is a string and I don't see 
how incrementing a string will do anything useful.  So how do you 
increment the iterator?

I feel like there's got to be some documentation I'm missing somewhere.

This does return the terms until it hits the end case then it hangs, 
perl just keeps clocking time.  I have to kill it.

If I run the following, the same thing happens:
        my %eterm = $enq->get_matching_terms_end($id);







More information about the Xapian-discuss mailing list