NAME

Data::SearchEngine::Results - Results of a Data::SearchEngine search

VERSION

version 0.33

SYNOPSIS

    # An example search implementation

    sub search {
        my ($self, $query) = @_;

        # boring, search specific implementation
        
        my $results = Data::SearchEngine::Results->new(
            query       => $query,
            pager       => Data::SearchEngine::Paginator->new # Data::Paginator subclass
        );

        my @sorted_products; # fill with a search or something
        my $scores; # fill with search scores

        my $start = time;
        foreach my $product (@sorted_products) {
            my $item = Data::SearchEngine::Item->new(
                id      => $product->id,            # unique product id
                score   => $scores->{$product->id}  # make your own scores
            );

            $item->set_value('url', 'http://example.com/product/'.$product->id);
            $item->set_value('price', $product->price);

            $results->add($item);
        }
        $results->elapsed(time - $start);

        return $results;
    }

DESCRIPTION

The Results object holds the list of items found during a query. They are usually sorted by a score. This object provides some standard attributes you are likely to use.

SERIALIZATION

This module uses MooseX::Storage::Deferred to provide serialization. You may serialize it thusly:

  my $json = $results->freeze({ format => 'JSON' });
  # ...
  my $results = Data::SearchEngine::Results->thaw($json, { format => 'JSON' });

ATTRIBUTES

elapsed

The time it took to complete this search.

items

The list of Data::SearchEngine::Items found for the query.

query

The Data::SearchEngine::Query that yielded this Results object.

pager

The Data::Page for this result.

raw

An attribute that a search backend may fill with the "raw" response it received. This is useful for retrieving engine-specific information such as debugging or tracing information. Type is Any.

METHODS

add ($item)

Add an item to this result.

get ($n)

Get the nth item.

AUTHOR

Cory G Watson <gphat@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Cold Hard Code, LLC.

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