# ***********************************************
#
# !!!! DO NOT EDIT !!!!
#
# This file was auto-generated by Build.PL.
#
# ***********************************************
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
=encoding utf8
=head1 NAME
Lucy::Index::IndexManager - Policies governing index updating, locking, and file deletion.
=head1 SYNOPSIS
use Sys::Hostname qw( hostname );
my $hostname = hostname() or die "Can't get unique hostname";
my $manager = Lucy::Index::IndexManager->new(
host => $hostname,
);
# Index time:
my $indexer = Lucy::Index::Indexer->new(
index => '/path/to/index',
manager => $manager,
);
# Search time:
my $reader = Lucy::Index::IndexReader->open(
index => '/path/to/index',
manager => $manager,
);
my $searcher = Lucy::Search::IndexSearcher->new( index => $reader );
=head1 DESCRIPTION
IndexManager is an advanced-use class for controlling index locking,
updating, merging, and deletion behaviors.
IndexManager and L<Architecture|Lucy::Plan::Architecture> are
complementary classes: Architecture is used to define traits and behaviors
which cannot change for the life of an index; IndexManager is used for
defining rules which may change from process to process.
=head1 CONSTRUCTORS
=head2 new
my $manager = Lucy::Index::IndexManager->new(
host => $hostname, # default: ""
);
Create a new IndexManager.
=over
=item *
B<host> - An identifier which should be unique per-machine.
=item *
B<lock_factory> - A LockFactory.
=back
=head1 METHODS
=head2 set_folder
$index_manager->set_folder($folder);
$index_manager->set_folder(); # default: undef
Setter for C<folder> member. Typical clients (Indexer,
IndexReader) will use this method to install their own Folder instance.
=head2 get_folder
my $folder = $index_manager->get_folder();
Getter for C<folder> member.
=head2 get_host
my $string = $index_manager->get_host();
Getter for C<host> member.
=head2 recycle
my $arrayref = $index_manager->recycle(
reader => $reader, # required
del_writer => $del_writer, # required
cutoff => $cutoff, # required
optimize => $optimize, # default: false
);
Return an array of SegReaders representing segments that should be
consolidated. Implementations must balance index-time churn against
search-time degradation due to segment proliferation. The default
implementation prefers small segments or segments with a high
proportion of deletions.
=over
=item *
B<reader> - A PolyReader.
=item *
B<del_writer> - A DeletionsWriter.
=item *
B<cutoff> - A segment number which all returned SegReaders must
exceed.
=item *
B<optimize> - A boolean indicating whether to spend extra time
optimizing the index for search-time performance.
=back
=head2 make_write_lock
my $lock = $index_manager->make_write_lock();
Create the Lock which controls access to modifying the logical content
of the index.
=head2 set_write_lock_timeout
$index_manager->set_write_lock_timeout($timeout);
Setter for write lock timeout. Default: 1000 milliseconds.
=head2 get_write_lock_timeout
my $int = $index_manager->get_write_lock_timeout();
Getter for write lock timeout.
=head2 set_write_lock_interval
$index_manager->set_write_lock_interval($timeout);
Setter for write lock retry interval. Default: 100 milliseconds.
=head2 get_write_lock_interval
my $int = $index_manager->get_write_lock_interval();
Getter for write lock retry interval.
=head1 INHERITANCE
Lucy::Index::IndexManager isa Clownfish::Obj.
=cut