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.

 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 <[email protected]>

   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.