Perl Diver 2.33
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

Plucene::Index::TermInfosReader

Name Plucene::Index::TermInfosReader
Version
Located at /usr/share/perl5
File /usr/share/perl5/Plucene/Index/TermInfosReader.pm
Is Core No
Search CPAN for this module Plucene::Index::TermInfosReader
Documentation Plucene::Index::TermInfosReader
Module Details Plucene::Index::TermInfosReader

NAME

Plucene::Index::TermInfosReader - read the term infos file


SYNOPSIS

        my $reader = Plucene::Index::TermInfosReader->new(
                        $dir_name, $segment, $fis);
        my Plucene::Index::TermInfo $term_info = 
                $reader->get(Plucene::Index::Term $term);

        my Plucene::Index::SegmentTermEnum $enum = 
                $reader->terms(Plucene::Index::Term $term);

=head1 DESCRIPTION

This reads a term infos file.


METHODS

new

        my $reader = Plucene::Index::TermInfosReader->new(
                        $dir_name, $segment, $fis);

This will create a new Plucene::Index::TermInfosReader object with the passed directory name, segment name and field infos.


=cut

sub new {
my ($class, $dir, $seg, $fis) = @_;
my $file = ``$dir/$seg.tis'';
confess(``$file is already open!'') unless -s $file;

        my $self = bless {
                directory   => $dir,
                segment     => $seg,
                field_infos => $fis,
                enum        => Plucene::Index::SegmentTermEnum->new(
                        Plucene::Store::InputStream->new($file),
                        $fis, 0
                ),
        }, $class;
        $self->{size} = $self->{enum}->size;
        $self->_read_index;
        return $self;
}

sub _read_index {
my $self = shift;
my $index_enum = Plucene::Index::SegmentTermEnum->new(
Plucene::Store::InputStream->new(
``$self->{directory}/$self->{segment}.tii''),
$self->{field_infos},
1
);
my $size = $index_enum->size;
$self->{index_terms} = [];
$self->{index_infos} = [];
$self->{index_pointers} = [];
for (my $i = 0 ; $index_enum->next ; $i++) {
$self->{index_terms}->[$i] = $index_enum->term;

                # Need to clone here.
                $self->{index_infos}->[$i] =
                        Plucene::Index::TermInfo->new({ %{ $index_enum->term_info } });
                $self->{index_pointers}->[$i] = $index_enum->index_pointer;
        }
}

memoize('_get_index_offset');

sub _get_index_offset {
my ($self, $term) = @_;
my $lo = 0;
my $hi = $#{ $self->{index_terms} };

        while ($hi >= $lo) {
                my $mid = ($lo + $hi) >> 1;
                # Terms are comparable, hooray
                my $delta = $term->_cmp($self->{index_terms}->[$mid]);
                if    ($delta < 0) { $hi = $mid - 1; }
                elsif ($delta > 0) { $lo = $mid + 1; }
                else { return $mid }
        }
        return $hi;
}

get

        my Plucene::Index::TermInfo $term_info = 
                $reader->get(Plucene::Index::Term $term);

get_int / get_position

These are never called.

terms

        my Plucene::Index::SegmentTermEnum $enum = 
                $reader->terms(Plucene::Index::Term $term);

This will return the Plucene::Index::SegmentTermEnum for the passed-in Plucene::Index::Term.


=cut

sub terms { my ($self, $term) = @_; $term ? $self->get($term) : $self->_seek_enum(0); $self->{enum}->clone; }

1;

Perl Diver brought to you by ScriptSolutions.com © 1997- 2026