Marvin Humphrey > KinoSearch-0.315 > KinoSearch::Index::Segment

Download:
KinoSearch-0.315.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  4
View/Report Bugs
Source  

NAME ^

KinoSearch::Index::Segment - Warehouse for information about one segment of an inverted index.

DEPRECATED ^

The KinoSearch code base has been assimilated by the Apache Lucy project. The "KinoSearch" namespace has been deprecated, but development continues under our new name at our new home: http://lucy.apache.org/

SYNOPSIS ^

    # Index-time.
    package MyDataWriter;
    use base qw( KinoSearch::Index::DataWriter );

    sub finish {
        my $self     = shift;
        my $segment  = $self->get_segment;
        my $metadata = $self->SUPER::metadata();
        $metadata->{foo} = $self->get_foo;
        $segment->store_metadata(
            key       => 'my_component',
            metadata  => $metadata
        );
    }

    # Search-time.
    package MyDataReader;
    use base qw( KinoSearch::Index::DataReader );

    sub new {
        my $self     = shift->SUPER::new(@_);
        my $segment  = $self->get_segment;
        my $metadata = $segment->fetch_metadata('my_component');
        if ($metadata) {
            $self->set_foo( $metadata->{foo} );
            ...
        }
        return $self;
    }

DESCRIPTION ^

KinoSearch's indexes are made up of individual "segments", each of which is is an independent inverted index. On the file system, each segment is a directory within the main index directory whose name starts with "seg_": "seg_2", "seg_5a", etc.

Each Segment object keeps track of information about an index segment: its fields, document count, and so on. The Segment object itself writes one file, segmeta.json; besides storing info needed by Segment itself, the "segmeta" file serves as a central repository for metadata generated by other index components -- relieving them of the burden of storing metadata themselves.

METHODS ^

add_field(field)

Register a new field and assign it a field number. If the field was already known, nothing happens.

Returns: the field's field number, which is a positive integer.

store_metadata( [labeled params] )

Store arbitrary information in the segment's metadata Hash, to be serialized later. Throws an error if key is used twice.

fetch_metadata(key)

Fetch a value from the Segment's metadata hash.

field_num(field)

Given a field name, return its field number for this segment (which may differ from its number in other segments). Return 0 (an invalid field number) if the field name can't be found.

field_name(field_num)

Given a field number, return the name of its field, or undef if the field name can't be found.

get_name()

Getter for the object's seg name.

get_number()

Getter for the segment number.

set_count(count)

Setter for the object's document count.

get_count()

Getter for the object's document count.

INHERITANCE ^

KinoSearch::Index::Segment isa KinoSearch::Object::Obj.

COPYRIGHT AND LICENSE ^

Copyright 2005-2011 Marvin Humphrey

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

syntax highlighting: