Provided by: libwebservice-solr-perl_0.42-1_all bug


       WebService::Solr - Module to interface with the Solr (Lucene) webservice


           my $solr = WebService::Solr->new;
           $solr->add( @docs );

           my $response = $solr->search( $query );
           for my $doc ( $response->docs ) {
               print $doc->value_for( $id );


       WebService::Solr is a client library for Apache Lucene's Solr; an enterprise-grade
       indexing and searching platform.


       ·   url - the webservice base url

       ·   agent - a user agent object

       ·   autocommit - a boolean value for automatic commit() after add/update/delete (default:

       ·   default_params - a hashref of parameters to send on every request

       ·   last_response - stores a WebService::Solr::Response for the last request


       Enabling HTTP Keep-Alive is as simple as passing your custom user-agent to the

           my $solr = WebService::Solr->new( $url,
               { agent => LWP::UserAgent->new( keep_alive => 1 ) }

       Visit LWP::UserAgent's documentation for more information and available options.


   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 (

   auto_suggest( \%options )
       Get suggestions from a list of terms for a given field. The Solr wiki has more details
       about the available options (

   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()

       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"



       ·   Solr - an alternate library


       Brian Cassidy <>

       Kirk Beers


       Copyright 2008-2016 National Adult Literacy Database

       This library is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.