Lucy::Index::DataWriter - Write data to an index.
# Abstract base class.
DataWriter is an abstract base class for writing index data, generally in segment-sized chunks. Each component of an index – e.g. stored fields, lexicon, postings, deletions – is represented by a DataWriter/DataReader pair.
Components may be specified per index by subclassing Architecture.
my $writer = MyDataWriter->new( snapshot => $snapshot, # required segment => $segment, # required polyreader => $polyreader, # required );
$data_writer->add_segment( reader => $reader # required doc_map => $doc_map # default: undef );
Add content from an existing segment into the one currently being written.
Complete the segment: close all streams, store metadata, etc.
my $int = $data_writer->format();
Every writer must specify a file format revision number, which should increment each time the format changes. Responsibility for revision checking is left to the companion DataReader.
Remove a segment’s data. The default implementation is a no-op, as all files within the segment directory will be automatically deleted. Subclasses which manage their own files outside of the segment system should override this method and use it as a trigger for cleaning up obsolete data.
$data_writer->merge_segment( reader => $reader # required doc_map => $doc_map # default: undef );
Move content from an existing segment into the one currently being written.
my $hashref = $data_writer->metadata();
Arbitrary metadata to be serialized and stored by the Segment. The default implementation supplies a hash with a single key-value pair for “format”.
my $snapshot = $data_writer->get_snapshot();
Accessor for “snapshot” member var.
my $segment = $data_writer->get_segment();
Accessor for “segment” member var.
my $poly_reader = $data_writer->get_polyreader();
Accessor for “polyreader” member var.
my $schema = $data_writer->get_schema();
Accessor for “schema” member var.
my $folder = $data_writer->get_folder();
Accessor for “folder” member var.
Lucy::Index::DataWriter isa Clownfish::Obj.