NAME

Data::SearchEngine::Solr - Data::SearchEngine backend for Solr

SYNOPSIS

my $solr = Data::SearchEngine::Solr->new(
  url => 'http://localhost:8983/solr',
  options => {
      fq => 'category:Foo',
      facets => 'true'
  }
);

my $query = Data::SearchEngine::Query->new(
  count => 10,
  page => 1,
  query => 'ice cream',
);

my $results = $solr->search($query);

foreach my $item ($results->items) {
  print $item->get_value('name')."\n";
}

DESCRIPTION

Data::SearchEngine::Solr is a Data::SearchEngine backend for the Solr search server.

SOLR FEATURES

FILTERS

This module uses the values from Data::SearchEngine::Query's filters to populate the fq parameter. Before talking to Solr we iterate over the filters and add the filter's value to fq.

$query->filters->{'last name watson'} = 'last_name:watson';

Will results in fq=name:watson. Multiple filters will be appended.

FACETS

Facets may be enabled thusly:

$solr->options->{facets} = 'true';
$solr->options->{facet.field} = 'somefield';

You may also use other facet.* parameters, as defined by Solr.

To access facet data, consult the documentation for Data::SearchEngine::Results and it's facets method.

SPELLCHECK

Queries may be spellchecked using Solr's spellcheck component. If you supply the correct parameters through the URL or to your URI handler then Data::SearchEngine::Solr will see it in the results and populate the bits from Data::SearchEngine::Results::Spellcheck. Note that some of the features may not work properly unless spellcheck.extendedResults is true in your query.

ATTRIBUTES

options

HashRef that is passed to WebService::Solr. Please see the above documentation on filters and facets before using this directly.

url

The URL at which to contact the Solr instance.

METHODS

add (\@items)

Adds a list of Data::SearchEngine::Items to the Solr index. The Items are converted into WebService::Solr::Documents using the follow means:

score is used as the bonus.
id is used as the document's id.
Multiple-value fields are broken up into multiple WebService::Solr::Field objects per WebService::Solr's convention. This is merely a formality, it has no real affect.

delete

Deletes an item from the index. A straight dispatch to WebService::Solr's delete.

search ($query)

Accepts a Data::SearchEngine::Query and returns a Data::SearchEngine::Results object containing the data from Solr.

update

Alias for add.

AUTHOR

Cory G Watson, <gphat at cpan.org>

COPYRIGHT & LICENSE

Copyright 2009 Cory G Watson.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.