5 # http://wiki.apache.org/couchdb/ExternalProcesses
7 use KinoSearch::Search::IndexSearcher;
9 use Data::Dump qw(dump);
13 my $searcher = KinoSearch::Search::IndexSearcher->new(
17 open(my $log, '>>', '/tmp/couchdb-external-kinosearch.log');
21 my $request = decode_json($_);
22 print $log "<<< $_\n";
29 if ( my $q = $request->{query}->{q} ) {
31 my $hits = $searcher->hits( query => $q );
33 $response->{json}->{total_hits} = $hits->total_hits;
35 while ( my $hit = $hits->next ) {
36 push @{ $response->{json}->{hits} }, {
39 score => $hit->get_score,
44 $response->{json}->{error} = "no query found";
47 my $json = encode_json($response);
49 print $log ">>> $json\n";
54 ; insert following into /etc/couchdb/local.ini:
60 kinosearch = /srv/angular-mojolicious/couchdb-external-kinosearch.pl
63 _kinosearch = {couch_httpd_external, handle_external_req, <<"kinosearch">>}