From fb073cc99e46912960bf1dbcd8b8714a72d75553 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 18 Feb 2020 14:23:29 -0500 Subject: [PATCH] LP1844418 Direct indexing experiment WIP Signed-off-by: Bill Erickson --- .../perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm | 26 +++++++++++----------- Open-ILS/src/support-scripts/elastic-index.pl | 24 +++++++++++++++----- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm b/Open-ILS/src/perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm index ea941304d3..bdbb823111 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Elastic/BibSearch/XSLT.pm @@ -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; diff --git a/Open-ILS/src/support-scripts/elastic-index.pl b/Open-ILS/src/support-scripts/elastic-index.pl index 307e7d4d33..6da51e1af7 100755 --- a/Open-ILS/src/support-scripts/elastic-index.pl +++ b/Open-ILS/src/support-scripts/elastic-index.pl @@ -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) { -- 2.11.0