# ***********************************************
# 
# !!!! 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::Simple - Basic search engine.

=head1 SYNOPSIS

First, build an index of your documents.

    my $index = Lucy::Simple->new(
        path     => '/path/to/index/'
        language => 'en',
    );

    while ( my ( $title, $content ) = each %source_docs ) {
        $index->add_doc({
            title    => $title,
            content  => $content,
        });
    }

Later, search the index.

    my $total_hits = $index->search(
        query      => $query_string,
        offset     => 0,
        num_wanted => 10,
    );

    print "Total hits: $total_hits\n";
    while ( my $hit = $index->next ) {
        print "$hit->{title}\n",
    }

=head1 DESCRIPTION

Lucy::Simple is a stripped-down interface for the Lucy search
engine library.

=head1 CONSTRUCTORS

=head2 new

    my $lucy = Lucy::Simple->new(
        path     => '/path/to/index/',
        language => 'en',
    );

Create a Lucy::Simple object, which can be used for both indexing and
searching.  Both parameters C<path> and C<language> are required.

=over

=item *

B<path> - Where the index directory should be located.  If no index
is found at the specified location, one will be created.

=item *

B<language> - The language of the documents in your collection,
indicated  by a two-letter ISO code.  12 languages are supported:

    |-----------------------|
    | Language   | ISO code |
    |-----------------------|
    | Danish     | da       |
    | Dutch      | nl       |
    | English    | en       |
    | Finnish    | fi       |
    | French     | fr       |
    | German     | de       |
    | Italian    | it       |
    | Norwegian  | no       |
    | Portuguese | pt       |
    | Spanish    | es       |
    | Swedish    | sv       |
    | Russian    | ru       |
    |-----------------------|

=back

=head1 METHODS

=head2 add_doc

    $lucy->add_doc({
        location => $url,
        title    => $title,
        content  => $content,
    });

Add a document to the index. The document must be supplied as a hashref,
with field names as keys and content as values.


=head2 search

    my $int = $simple->search(
        query      => $query,       # required
        offset     => $offset,      # default: 0
        num_wanted => $num_wanted,  # default: 10
        sort_spec  => $sort_spec,   # default: undef
    );

Search the index.  Returns the total number of documents which match
the query.  (This number is unlikely to match C<num_wanted>.)

=over

=item *

B<query> - A search query string.

=item *

B<offset> - The number of most-relevant hits to discard, typically
used when “paging” through hits N at a time.  Setting offset to 20 and
num_wanted to 10 retrieves hits 21-30, assuming that 30 hits can be
found.

=item *

B<num_wanted> - The number of hits you would like to see after
C<offset> is taken into account.

=item *

B<sort_spec> - A L<SortSpec|Lucy::Search::SortSpec>, which will affect how results are
ranked and returned.

=back

=head2 next

    my $hit_doc = $simple->next();

Return the next hit, or undef when the iterator is exhausted.

=head1 INHERITANCE

Lucy::Simple isa Clownfish::Obj.

=cut

