package Catalyst::Model::Xapian::Result;
use Data::Page;
use Moose;
use Search::Xapian::MSet::Tied;
__PACKAGE__->meta->add_attribute( $_, is => 'rw' )
for qw/querytime struct search pager query query_obj mset page page_size/;
sub new {
my ( $proto, $self) = @_;
my $class = ref $proto || $proto;
bless $self, $class;
my @matches_tied;
tie( @matches_tied, 'Search::Xapian::MSet::Tied', $self->mset);
$self->struct(\@matches_tied);
my $pager=Data::Page->new();
$pager->total_entries( $self->mset->get_matches_estimated );
$pager->entries_per_page( $self->page_size );
$pager->current_page( $self->page );
$self->pager( $pager );
return $self;
}
sub hits {
my $self=shift;
my @matches;
foreach my $match ( @{ $self->struct }) {
push @matches,$self->search->extract_data( $match->get_document, $self->query_obj);
}
return \@matches;
}
1;