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::SegmentReader

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

NAME

Plucene::Index::SegmentReader - the Segment reader


SYNOPSIS

        my $seg_reader = 
          Plucene::Index::SegmentReader->new( Plucene::Index::SegmentInfo $si);
        my @files = $seg_reader->files;
        my @terms = $seg_reader->terms;
        my $doc = $seg_reader->document($id);
        my $doc_freq = $seg_reader->doc_freq($term);
        my $max_doc = $seg_reader->max_doc;
        my $norms = $seg_reader->norms($field, $offset);

        my Plucene::Index::SegmentTermDocs $docs 
                = $seg_reader->term_docs($term);

        my Plucene::Index::SegmentTermPositions $pos 
                = $seg_reader->term_positions($term);

        my Plucene::Store::InputStream $stream 
                = $seg_reader->norm_stream($field);

        if ($seg_reader->is_deleted($id)) {  .. }
        if ($seg_reader->has_deletions(Plucene::Index::SegmentInfo $si)) 
                {  ... }

=head1 DESCRIPTION

The segment reader class.


METHODS

new

        my $seg_reader = 
          Plucene::Index::SegmentReader->new( Plucene::Index::SegmentInfo $si);

This will create a new Plucene::Index::SegmentReader object.

has_deletions

        if ($seg_reader->has_deletions(Plucene::Index::SegmentInfo $si)) 
                {  ... }

files

        my @files = $seg_reader->files;

terms

        my @terms = $seg_reader->terms;

document

        my $doc = $seg_reader->document($id);

is_deleted

        if ($seg_reader->is_deleted($id)) {  .. }

term_docs

        my Plucene::Index::SegmentTermDocs $docs 
                = $seg_reader->term_docs($term);

This will return the Plucene::Index::SegmentTermDocs object for the given term.

term_positions

        my Plucene::Index::SegmentTermPositions $pos 
                = $seg_reader->term_positions($term);

This will return the Plucene::Index::SegmentTermPositions object for the given term.

doc_freq

        my $doc_freq = $seg_reader->doc_freq($term);

This returns the number of documents containing the passed term.


=cut

sub doc_freq { my ($self, $term) = @_; my $ti = $self->{tis}->get($term) or return 0; return $ti->doc_freq; }

num_docs

        my $num_docs = $seg_reader->num_docs;

This is the number of documents, excluding deleted ones.

max_doc

        my $max_doc = $seg_reader->max_doc;

norms

        my $norms = $seg_reader->norms($field, $offset);

This returns the byte-encoded normalisation factor for the passed field. This is used by the search code to score documents.

Note we are not using the 'offset' and 'bytes' arguments per the Java. Instead, callers should use substr to put the result of ``norms'' into the appropriate place in a string.

norm_stream

        my Plucene::Store::InputStream $stream 
                = $seg_reader->norm_stream($field);

This will return the Plucene::Store::InputStream for the passed field.


=cut

sub norm_stream {
my ($self, $field) = @_;
my $norm = $self->{norms}->{$field} or return;

        # Clone the norm's filehandle
        my $clon = $norm->{in}->clone;
        $clon->seek(0, 0);
        return $clon;
}

sub _open_norms { my $self = shift; for my $fi (grep $_->is_indexed, $self->field_infos->fields) { my $file = ``$self->{directory}/$self->{segment}.f'' . $fi->number; my $fh = Plucene::Store::InputStream->new($file) or die $file . `` :'' . $!; $self->{norms}{ $fi->name } = Plucene::Index::Norm->new($fh); } }

package Plucene::Index::Norm;

sub new { bless { in => $_[1] }, $_[0] }

# They have bytes, too, but we're not worrying about that.

1;

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