Provided by: liblucy-perl_0.3.3-8_amd64
NAME
LucyX::Index::ByteBufDocWriter - Write a Doc as a fixed-width byte array.
SYNOPSIS
Create an Architecture subclass which overrides register_doc_writer() and register_doc_reader(): package MyArchitecture; use base qw( Lucy::Plan::Architecture ); use LucyX::Index::ByteBufDocReader; use LucyX::Index::ByteBufDocWriter; sub register_doc_writer { my ( $self, $seg_writer ) = @_; my $doc_writer = LucyX::Index::ByteBufDocWriter->new( width => 16, field => 'value', 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::ByteBufDocReader->new( width => 16, field => 'value', 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 { MyArchitecture->new } Proceed as normal in your indexer app, making sure that every supplied document supplies a valid value for the field in question: $indexer->add_doc({ title => $title, content => $content, id => $id, # <---- Must meet spec. }); Then, in your search app: my $searcher = Lucy::Search::IndexSearcher->new( index => '/path/to/index', ); my $hits = $searcher->hits( query => $query ); while ( my $id = $hits->next ) { my $real_doc = $external_document_source->fetch( $doc->{value} ); ... }
DESCRIPTION
This is a proof-of-concept class to demonstrate alternate implementations for fetching documents. It is unsupported.