LP1844418 Direct indexing experiment WIP
authorBill Erickson <berickxx@gmail.com>
Tue, 18 Feb 2020 19:23:29 +0000 (14:23 -0500)
committerBill Erickson <berickxx@gmail.com>
Fri, 21 Feb 2020 21:20:33 +0000 (16:20 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm
Open-ILS/src/support-scripts/elastic-index.pl

index ea94130..bdbb823 100644 (file)
@@ -56,7 +56,7 @@ sub xsl_file {
 sub xsl_doc {
     my ($self) = @_;
 
-    $self->{xsl_doc} = XML::LibXML->load_xml(location => $self->xsl_file);
+    $self->{xsl_doc} = XML::LibXML->load_xml(location => $self->xsl_file)
         unless $self->{xsl_doc};
 
     return $self->{xsl_doc};
@@ -134,7 +134,7 @@ sub get_bib_data {
     for my $db_rec (@$db_data) {
         my $marc_doc = XML::LibXML->load_xml(string => $db_rec->{marc});
         my $result = $self->xsl_sheet->transform($marc_doc);
-        my $output = $stylesheet->output_as_chars($result);
+        my $output = $self->xsl_sheet->output_as_chars($result);
 
         my @rows = split(/\n/, $output);
         my $first = 1;
@@ -152,23 +152,23 @@ sub get_bib_data {
             }
 
             if ($purpose eq 'search') {
-                $field->{search_group} = @parts[1];
-                $field->{name} = @parts[2];
-                $field->{weight} = @parts[3];
-                $field->{value} = join(' ', @parts[4..$#parts]);
+                $field->{search_group} = $parts[1];
+                $field->{name} = $parts[2];
+                $field->{weight} = $parts[3];
+                $field->{value} = join(' ', $parts[4..$#parts]);
 
             } elsif ($purpose eq 'facet') {
-                $field->{search_group} = @parts[1];
-                $field->{name} = @parts[2];
-                $field->{value} = join(' ', @parts[3..$#parts]);
+                $field->{search_group} = $parts[1];
+                $field->{name} = $parts[2];
+                $field->{value} = join(' ', $parts[3..$#parts]);
 
             } elsif ($purpose eq 'filter' || $purpose eq 'sorter') {
-                $field->{name} = @parts[1];
-                $field->{value} = join(' ', @parts[2..$#parts]);
+                $field->{name} = $parts[1];
+                $field->{value} = join(' ', $parts[2..$#parts]);
             }
-        }
 
-        push(@$bib_data, $field);
+            push(@$bib_data, $field);
+        }
     }
 
     return $bib_data;
index 307e7d4..6da51e1 100755 (executable)
@@ -6,6 +6,7 @@ use OpenSRF::Utils::JSON;
 use OpenILS::Utils::Fieldmapper;
 use OpenILS::Utils::CStoreEditor;
 use OpenILS::Elastic::BibSearch;
+use OpenILS::Elastic::BibSearch::XSLT;
 
 my $help;
 my $osrf_config = '/openils/conf/opensrf_core.xml';
@@ -21,6 +22,7 @@ my $start_record;
 my $stop_record;
 my $modified_since;
 my $max_duration;
+my $use_xslt;
 my $batch_size = 500;
 
 # Database settings read from ENV by default.
@@ -46,6 +48,7 @@ GetOptions(
     'modified-since=s'  => \$modified_since,
     'max-duration=s'    => \$max_duration,
     'batch-size=s'      => \$batch_size,
+    'use-xslt=s'        => \$use_xslt,
     'db-name=s'         => \$db_name,
     'db-host=s'         => \$db_host,
     'db-port=s'         => \$db_port,
@@ -141,11 +144,22 @@ OpenILS::Utils::CStoreEditor::init();
 my $es;
 
 if ($index_class eq 'bib-search') {
-    $es = OpenILS::Elastic::BibSearch->new(
-        cluster => $cluster, 
-        index_name => $index_name,
-        write_mode => 1
-    );
+
+    if ($use_xslt) {
+        $es = OpenILS::Elastic::BibSearch::XSLT->new(
+            cluster => $cluster, 
+            index_name => $index_name,
+            write_mode => 1,
+            xsl_file => $use_xslt
+        );
+    } else {
+
+        $es = OpenILS::Elastic::BibSearch->new(
+            cluster => $cluster, 
+            index_name => $index_name,
+            write_mode => 1
+        );
+    }
 }
 
 if (!$es) {