# ***********************************************
#
# !!!! 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::BackgroundMerger - Consolidate index segments in the background.
=head1 SYNOPSIS
my $bg_merger = Lucy::Index::BackgroundMerger->new(
index => '/path/to/index',
);
$bg_merger->commit;
=head1 DESCRIPTION
Adding documents to an index is usually fast, but every once in a while the
index must be compacted and an update takes substantially longer to
complete. See L<FastUpdates|Lucy::Docs::Cookbook::FastUpdates> for how to use this class to control
worst-case index update performance.
As with L<Indexer|Lucy::Index::Indexer>, see L<FileLocking|Lucy::Docs::FileLocking> if your index is on a
shared volume.
=head1 CONSTRUCTORS
=head2 new
my $bg_merger = Lucy::Index::BackgroundMerger->new(
index => '/path/to/index', # required
manager => $manager # default: created internally
);
Open a new BackgroundMerger.
=over
=item *
B<index> - Either a string filepath or a Folder.
=item *
B<manager> - An IndexManager. If not supplied, an IndexManager with
a 10-second write lock timeout will be created.
=back
=head1 METHODS
=head2 optimize
$background_merger->optimize();
Optimize the index for search-time performance. This may take a
while, as it can involve rewriting large amounts of data.
=head2 commit
$background_merger->commit();
Commit any changes made to the index. Until this is called, none of
the changes made during an indexing session are permanent.
Calls L<prepare_commit()|/prepare_commit> implicitly if it has not already been called.
=head2 prepare_commit
$background_merger->prepare_commit();
Perform the expensive setup for L<commit()|/commit> in advance, so that L<commit()|/commit>
completes quickly.
Towards the end of L<prepare_commit()|/prepare_commit>, the BackgroundMerger attempts to
re-acquire the write lock, which is then held until L<commit()|/commit> finishes
and releases it.
=head1 INHERITANCE
Lucy::Index::BackgroundMerger isa Clownfish::Obj.
=cut