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 Moose 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 serialzied 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. 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 correspodingly named function (e.g. "dataimport" ). SEE ALSO * http://lucene.apache.org/solr/ * Solr - an alternate library AUTHORS Brian Cassidy Kirk Beers COPYRIGHT AND LICENSE Copyright 2008-2012 National Adult Literacy Database This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.