Lucy::Index::Segment(3) Warehouse for information about one segment of an inverted index.

SYNOPSIS


# Index-time.
package MyDataWriter;
use base qw( Lucy::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( Lucy::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

Apache Lucy'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.
  • field - Field name.

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.
  • key - String identifying an index component.
  • metadata - JSON-izable data structure.

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 - Field name.

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

Lucy::Index::Segment isa Lucy::Object::Obj.