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


# 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;
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;


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.



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 a value from the Segment's metadata hash.


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.


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


Getter for the object's seg name.


Getter for the segment number.


Setter for the object's document count.


Getter for the object's document count.


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