fix database name in view
[angular-mojolicious.git] / couchdb-external-kinosearch.pl
index 30a4e21..b455bfd 100755 (executable)
@@ -3,22 +3,22 @@ use warnings;
 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;
 
-my $searcher = KinoSearch::Search::IndexSearcher->new( 
-       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 = {
@@ -28,25 +28,31 @@ while(<STDIN>) {
 
        if ( my $q = $request->{query}->{q} ) {
 
+               my $searcher = KinoSearch::Search::IndexSearcher->new( 
+                       index => '/tmp/kinosearch.' . $request->{info}->{db_name},
+               );
+
                my $hits = $searcher->hits( query => $q );
 
                $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";
 }
 
 
@@ -57,7 +63,7 @@ __END__
 level = debug
 
 [external]
-kinosearch = /home/dpavlin/klin/angular-mojolicious/couchdb-external-kinosearch.pl
+kinosearch = /srv/angular-mojolicious/couchdb-external-kinosearch.pl
 
 [httpd_db_handlers]
 _kinosearch = {couch_httpd_external, handle_external_req, <<"kinosearch">>}