finish riak search support
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 13 Nov 2010 15:29:18 +0000 (15:29 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 13 Nov 2010 15:29:18 +0000 (15:29 +0000)
git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@1357 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Output/Riak.pm
vhost/koha/config.yml

index 5ca5a8c..ef8de6d 100644 (file)
@@ -8,6 +8,7 @@ __PACKAGE__->mk_accessors(qw(
        input
        url
        database
+       bucket
 ));
 
 use Data::Dump qw/dump/;
@@ -16,7 +17,7 @@ use Net::Riak;
 
 =head1 NAME
 
-WebPAC::Output::Riak - feed data into Riak
+WebPAC::Output::Riak - feed data into Riak Search
 
 =head1 FUNCTIONS
 
@@ -32,10 +33,16 @@ sub init {
 
        $log->debug('init');
 
+       my $bucket = $self->bucket || join('.', $self->database, $self->input || 'webpac2' );
+
        $self->{_riak} = Net::Riak->new( host => $self->url );
-       $self->{_bucket} = $self->{_riak}->bucket( $self->database );
+       $self->{_bucket} = $self->{_riak}->bucket( $bucket );
+       $self->{_bucket}->set_properties({
+               precommit => [ { mod => 'riak_search_kv_hook', fun => 'precommit' } ],
+       });
 
-       $log->info("Riak ",$self->url, " bucket ", $self->database);
+       $log->info( $self->url,"/riak/$bucket" );
+#      warn dump($self->{_bucket}->get_properties);
 
        $self->{_count} = 0;
 
@@ -51,17 +58,23 @@ Adds one entry to database.
 
 =cut
 
-sub add_row {
-       my $self = shift;
+sub add {
+       my ($self,$id,$ds) = @_;
+       my $log = $self->_get_logger;
 
-       my ( $id, $ds ) = @_;
+#      $log->debug( 'ds = ', $id, sub { dump($ds) } );
 
-       my $log = $self->_get_logger;
+       my $data;
+       $data->{$_} = join(' ', @{ $ds->{$_}->{search} }) foreach
+               map { m/^\d+$/ ? $_ = $_ . '_num' : $_ }
+               # add _num suffix for riak search https://wiki.basho.com/display/RIAK/Riak+Search+-+Schema
+               grep { exists $ds->{$_}->{search} }
+               keys %$ds;
 
-       my $obj = $self->{_bucket}->new_object( $id, $ds );
+       my $obj = $self->{_bucket}->new_object( $id, $data );
        $obj->store;
 
-       $log->debug( $id, sub { dump($ds) } );
+       $log->debug( 'json = ', $id, sub { dump($data) } );
 
        $self->{_count}++;
 
index 0646f02..661b101 100644 (file)
@@ -18,6 +18,9 @@ databases:
         normalize:
           path: 'vhost/koha/marc.pl'
     output:
-      module: 'WebPAC::Output::SWISH'
-      database: 'ecas'
+      - module: 'WebPAC::Output::SWISH'
+        database: 'koha'
+      - module: 'WebPAC::Output::Riak'
+        url: 'http://10.60.0.92:8098'
+#        bucket: 'webpac2koha'