NAME

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

SYNOPSIS

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

   use KSx::Index::ZlibDocWriter;
   use KSx::Index::ZlibDocReader;

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

   sub register_doc_reader {
       my ( $self, $seg_reader ) = @_; 
       my $doc_reader = KSx::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       => 'KinoSearch::Index::DocReader',
           component => $doc_reader,
       );  
   }

   package MySchema;
   use base qw( KinoSearch::Plan::Schema );
   
   sub architecture { 
       shift;
       return MyArchitecture->new(@_); 
   }

DESCRIPTION

By default, a KinoSearch 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.

METHODS

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(reader)

Spawn a DocReader and register() it with the supplied SegReader.

  • reader - A SegReader.

INHERITANCE

KinoSearch::Plan::Architecture isa KinoSearch::Object::Obj.

COPYRIGHT AND LICENSE

Copyright 2005-2010 Marvin Humphrey

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