[Xapian-discuss] Search::Xapian and term positions

Olly Betts olly at survex.com
Wed Jan 19 22:17:03 GMT 2005


On Wed, Jan 19, 2005 at 10:26:00PM +0100, Arne Georg Gleditsch wrote:
> Firstly, get_matching_terms_begin1 and
> get_matching_terms_begin2 seem to switched around in Enquire.pm

Oops, so they are!

I've had a quick look, and I think the problem is that this isn't
implemented in C++ yet.  When I say "this" I mean creating a
PositionIterator from the TermIterator which you get from
Enquire::get_matching_terms_begin().  That should be fixed, but it'll
take me a while to get round to it.

However, you can just create one from the database by passing the docid
and termname explicitly:

   my $db = Search::Xapian::Database->new("test");
   my $enq = $db->enquire("xapian");
 
   my @matches = $enq->matches(0, 100);
   foreach my $match (@matches) {
       my $terms = $enq->get_matching_terms_begin($match);
       my $pos = $db->positionlist_begin($match->get_docid(), $terms->get_termname());
   }

That's probably all that would happen internally anyway, so this
shouldn't be any less efficient.

Cheers,
    Olly



More information about the Xapian-discuss mailing list