-
-
16 Apr 2012 21:20:13 UTC
- Distribution: KinoSearch
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues (5)
- Testers (536 / 133 / 8)
- Kwalitee
Bus factor: 0- 85.27% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (852.87KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 1 contributors- Marvin Humphrey <marvin at rectangular dot com>
- Dependencies
- JSON::XS
- Lingua::Stem::Snowball
- Lingua::StopWords
- Parse::RecDescent
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
KSx::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( KinoSearch::Plan::Architecture ); use KSx::Index::ByteBufDocReader; use KSx::Index::ByteBufDocWriter; sub register_doc_writer { my ( $self, $seg_writer ) = @_; my $doc_writer = KSx::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 => "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::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 => 'KinoSearch::Index::DocReader', component => $doc_reader, ); } package MySchema; use base qw( KinoSearch::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 = KinoSearch::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.
COPYRIGHT AND LICENSE
Copyright 2009-2011 Marvin Humphrey
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Module Install Instructions
To install KSx::Simple, copy and paste the appropriate command in to your terminal.
cpanm KSx::Simple
perl -MCPAN -e shell install KSx::Simple
For more information on module installation, please visit the detailed CPAN module installation guide.