# ***********************************************
#
# !!!! 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 Apache 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
);
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.
=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