partial skeleton for search with needed options
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 9 Jan 2011 17:43:07 +0000 (17:43 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 9 Jan 2011 17:43:07 +0000 (17:43 +0000)
lib/BackupPC/Search/KinoSearch.pm

index f6b3f91..043f8ab 100644 (file)
@@ -97,4 +97,36 @@ sub commit {
        warn "# commit index";
 }
 
        warn "# commit index";
 }
 
+sub search {
+       my ( $self, $offset, $on_page, $sort, $q, $shareid, $backup_from, $backup_to, $files_from, $files_to ) = @_;
+
+       warn "# search $offset/$on_page [$q] shareid: $shareid backup: $backup_from - $backup_to files: $files_from - $files_to";
+
+       my $sort_field = (split(/_/,$sort,2))[0];
+
+       my $rules = [ KinoSearch::Search::SortRule->new( type => 'score' ) ];
+       $rules->[0] = KinoSearch::Search::SortRule->new( field => $sort_field, reverse => $sort =~ m/_a$/ ? 0 : 1 ) if $sort_field;
+
+       my $sort_spec = KinoSearch::Search::SortSpec->new( rules => $rules );
+
+#      $q =~ s/(.)/$1 /g;
+       my $hits = $self->{searcher}->hits(
+               query => $q,
+               sort_spec => $sort_spec,
+       );
+
+
+       warn "# ", $hits->total_hits, " hits for $q\n";
+
+       return (0,[]) if $hits->total_hits == 0;
+
+       my $results;
+       while ( my $hit = $hits->next ) {
+warn "XXX ",dump($hit);
+               push @$results, $hit;
+       }
+
+       return ( $hits->total_hits, $results );
+}
+
 1;
 1;