KinoSearch::Indexer - Build inverted indexes.
my $indexer = KinoSearch::Indexer->new(
schema => $schema,
index => '/path/to/index',
create => 1,
);
while ( my ( $title, $content ) = each %source_docs ) {
$indexer->add_doc({
title => $title,
content => $content,
});
}
$indexer->commit;
Build inverted indexes.
The Indexer class is KinoSearch's primary tool for managing the content of inverted indexes, which may later be searched using KinoSearch::Searcher.
In general, only one Indexer at a time may write to an index safely. If a write lock cannot be secured, new() will throw an exception.
If an index is located on a shared volume, each writer application must
identify itself by supplying an
IndexManager with a unique
host id to Indexer's constructor or index corruption will
occur. See KinoSearch::Docs::FileLocking for a detailed discussion.
Note: at present, delete_by_term() and delete_by_query() only affect documents which had been previously committed to the index -- and not any documents added this indexing session but not yet committed. This may change in a future update.
my $indexer = KinoSearch::Indexer->new(
schema => $schema, # required at index creation
index => '/path/to/index', # required
create => 1, # default: 0
truncate => 1, # default: 0
manager => $manager # default: created internally
);
$indexer->add_doc($doc);
$indexer->add_doc( { field_name => $field_value } );
$indexer->add_doc(
doc => { field_name => $field_value },
boost => 2.5, #: default 1.0
);
Add a document to the index. Accepts either a single argument or labeled params.
Absorb an existing index into this one. The two indexes must have matching Schemas.
Optimize the index for search-time performance. This may take a while, as it can involve rewriting large amounts of data.
Commit any changes made to the index. Until this is called, none of the changes made during an indexing session are permanent.
Calling commit() invalidates the Indexer, so if you want to make more changes you'll need a new one.
Perform the expensive setup for commit() in advance, so that commit() completes quickly. (If prepare_commit() is not called explicitly by the user, commit() will call it internally.)
Mark documents which contain the supplied term as deleted, so that they will be excluded from search results and eventually removed altogether. The change is not apparent to search apps until after commit() is called.
indexed, an error will occur.)
field is associated with an Analyzer, term
will be processed automatically (so don't pre-process it yourself).
Mark documents which match the supplied Query as deleted.
KinoSearch::Indexer isa KinoSearch::Object::Obj.
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.