use strict;
# http://wiki.apache.org/couchdb/ExternalProcesses
+#
+# curl 'http://localhost:5984/drzb2011/_kinosearch?q=a&include_docs=true'
use KinoSearch::Search::IndexSearcher;
-use JSON;
+use Mojo::JSON;
use Data::Dump qw(dump);
$|=1;
index => '/tmp/index'
);
+our $json = Mojo::JSON->new;
+
open(my $log, '>>', '/tmp/couchdb-external-kinosearch.log');
while(<STDIN>) {
warn "# $_\n";
- my $request = decode_json($_);
+ my $request = $json->decode($_);
print $log "<<< $_\n";
my $response = {
$response->{json}->{total_hits} = $hits->total_hits;
while ( my $hit = $hits->next ) {
- push @{ $response->{json}->{hits} }, {
+ my $r = {
_id => $hit->{_id},
_rev => $hit->{_rev},
score => $hit->get_score,
};
+ $r->{doc} = $json->decode( $hit->{doc} ) if exists $request->{query}->{include_docs};
+ push @{ $response->{json}->{hits} }, $r;
}
} else {
$response->{json}->{error} = "no query found";
}
- my $json = encode_json($response);
- print $json, $/;
- print $log ">>> $json\n";
+ my $send = $json->encode($response);
+ print $send, $/;
+ print $log ">>> $send\n";
}