NAME
WebService::Solr - Module to interface with the Solr (Lucene) webservice
SYNOPSIS
my $solr = WebService::Solr->new;
$solr->add( @docs );
my $response = $solr->search( $query );
for my $doc ( $response->docs ) {
print $doc->value_for( $id );
}
DESCRIPTION
WebService::Solr is a client library for Apache Lucene's Solr; an enterprise-grade indexing and searching platform.
ACCESSORS
url - the webservice base url
agent - a user agent object
autocommit - a boolean value for automatic commit() after add/update/delete (default: enabled)
default_params - a hashref of parameters to send on every request
last_response - stores a WebService::Solr::Response for the last request
HTTP KEEP-ALIVE
Enabling HTTP Keep-Alive is as simple as passing your custom user-agent to the constructor.
my $solr = WebService::Solr->new( $url,
{ agent => LWP::UserAgent->new( keep_alive => 1 ) }
);
Visit LWP::UserAgent's documentation for more information and available options.
METHODS
new( $url, \%options )
Creates a new WebService::Solr instance. If $url
is omitted, then http://localhost:8983/solr
is used as a default. Available options are listed in the ACCESSORS section.
BUILDARGS( @args )
A Moo override to allow our custom constructor.
add( $doc|\@docs, \%options )
Adds a number of documents to the index. Returns true on success, false otherwise. A document can be a WebService::Solr::Document object or a structure that can be passed to WebService::Solr::Document->new
. Available options as of Solr 1.4 are:
overwrite (default: true) - Replace previously added documents with the same uniqueKey
commitWithin (in milliseconds) - The document will be added within the specified time
update( $doc|\@docs, \%options )
Alias for add()
.
delete( \%options )
Deletes documents matching the options provided. The delete operation currently accepts query
and id
parameters. Multiple values can be specified as array references.
# delete documents matching "title:bar" or uniqueId 13 or 42
$solr->delete( {
query => 'title:bar',
id => [ 13, 42 ],
} );
delete_by_id( $id )
Deletes all documents matching the id specified. Returns true on success, false otherwise.
delete_by_query( $query )
Deletes documents matching $query
. Returns true on success, false otherwise.
search( $query, \%options )
Searches the index given a $query
. Returns a WebService::Solr::Response object. All key-value pairs supplied in \%options
are serialized in the request URL.
If filter queries are needed, create WebService::Solr::Query objects and pass them into the %options
. For example, if you were searching a database of books for a subject of "Perl", but wanted only paperbacks and a copyright year of 2011 or 2012:
my $query = WebService::Solr::Query->new( { subject => 'Perl' } );
my %options = (
fq => [
WebService::Solr::Query->new( { binding => 'Paperback' } ),
WebService::Solr::Query->new( { year => [ 2011, 2012 ] } ),
],
);
my $response = $solr->search( $query, \%options );
The filter queries are typically added when drilling down into search results and selecting a facet to drill into.
In order to enable facets, the option facet => "on"
must be passed. Facet options are detailed in the wiki (https://wiki.apache.org/solr/SimpleFacetParameters).
auto_suggest( \%options )
Get suggestions from a list of terms for a given field. The Solr wiki has more details about the available options (http://wiki.apache.org/solr/TermsComponent)
commit( \%options )
Sends a commit command. Returns true on success, false otherwise. You must do a commit after an add, update or delete. By default, autocommit is enabled. You may disable autocommit to allow you to issue commit commands manually:
my $solr = WebService::Solr->new( undef, { autocommit => 0 } );
$solr->add( $doc ); # will not automatically call commit()
$solr->commit;
Options as of Solr 1.4 include:
maxSegments (default: 1) - Optimizes down to at most this number of segments
waitFlush (default: true) - Block until index changes are flushed to disk
waitSearcher (default: true) - Block until a new searcher is opened
expungeDeletes (default: false) - Merge segments with deletes away
rollback( )
This method will rollback any additions/deletions since the last commit.
optimize( \%options )
Sends an optimize command. Returns true on success, false otherwise.
Options as of Solr 1.4 are the same as commit()
.
ping( )
Sends a basic ping request. Returns true on success, false otherwise.
generic_solr_request( $path, \%query )
Performs a simple GET
request appending $path
to the base URL and using key-value pairs from \%query
to generate the query string. This should allow you to access parts of the Solr API that don't yet have their own correspondingly named function (e.g. dataimport
).
SEE ALSO
http://lucene.apache.org/solr/
Solr - an alternate library
AUTHORS
Andy Lester andy@petdance.com
Brian Cassidy <bricas@cpan.org>
Kirk Beers
COPYRIGHT AND LICENSE
Copyright 2008-2014 National Adult Literacy Database Copyright 2015-2020 Andy Lester
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.