Project Lucy has retired. For details please refer to its Attic page.
Lucy::Plan::Architecture – Apache Lucy Documentation
Apache Lucy™

NAME

Lucy::Plan::Architecture - Configure major components of an index.

SYNOPSIS

package MyArchitecture;
use base qw( Lucy::Plan::Architecture );

use LucyX::Index::ZlibDocWriter;
use LucyX::Index::ZlibDocReader;

sub register_doc_writer {
    my ( $self, $seg_writer ) = @_; 
    my $doc_writer = LucyX::Index::ZlibDocWriter->new(
        snapshot   => $seg_writer->get_snapshot,
        segment    => $seg_writer->get_segment,
        polyreader => $seg_writer->get_polyreader,
    );  
    $seg_writer->register(
        api       => "Lucy::Index::DocReader",
        component => $doc_writer,
    );  
    $seg_writer->add_writer($doc_writer);
}

sub register_doc_reader {
    my ( $self, $seg_reader ) = @_; 
    my $doc_reader = LucyX::Index::ZlibDocReader->new(
        schema   => $seg_reader->get_schema,
        folder   => $seg_reader->get_folder,
        segments => $seg_reader->get_segments,
        seg_tick => $seg_reader->get_seg_tick,
        snapshot => $seg_reader->get_snapshot,
    );  
    $seg_reader->register(
        api       => 'Lucy::Index::DocReader',
        component => $doc_reader,
    );  
}

package MySchema;
use base qw( Lucy::Plan::Schema );

sub architecture { 
    shift;
    return MyArchitecture->new(@_); 
}

DESCRIPTION

By default, a Lucy index consists of several main parts: lexicon, postings, stored documents, deletions, and highlight data. The readers and writers for that data are spawned by Architecture. Each component operates at the segment level; Architecture’s factory methods are used to build up SegWriter and SegReader.

CONSTRUCTORS

new

my $arch = Lucy::Plan::Architecture->new;

Constructor. Takes no arguments.

METHODS

register_doc_writer

$architecture->register_doc_writer($writer);

Spawn a DataWriter and register() it with the supplied SegWriter, adding it to the SegWriter’s writer stack.

  • writer - A SegWriter.

register_doc_reader

$architecture->register_doc_reader($reader);

Spawn a DocReader and register it with the supplied SegReader.

  • reader - A SegReader.

INHERITANCE

Lucy::Plan::Architecture isa Clownfish::Obj.