my $field_name = $field->name;
- my $search_group = $field->search_group;
- $field_name = "$search_group|$field_name" if $search_group;
+ my $field_class = $field->field_class;
+ $field_name = "$field_class|$field_name" if $field_class;
$logger->info("ES ONE FIELD name=$field_name: " . OpenSRF::Utils::JSON->perl2JSON($field));
my $def;
- if ($search_group) {
+ if ($field_class) {
if ($field->search_field eq 't') {
# Use the same fields and analysis as the 'grouped' field.
- $def = clone($properties->{$search_group});
- $def->{copy_to} = [$search_group, $SHORT_GROUP_MAP{$search_group}];
+ $def = clone($properties->{$field_class});
+ $def->{copy_to} = [$field_class, $SHORT_GROUP_MAP{$field_class}];
# Apply ranking boost to each analysis variation.
my $flds = $def->{fields};
my $ids_str = join(',', @$record_ids);
my $sql = <<SQL;
-SELECT DISTINCT ON (bre.id, search_group, name, value)
+SELECT DISTINCT ON (bre.id, field_class, name, value)
bre.id,
bre.create_date,
bre.edit_date,
($body->{edit_date} = $field->{edit_date}) =~ s/ /T/g;
}
- my $fclass = $field->{search_group};
+ my $fclass = $field->{field_class};
my $fname = $field->{name};
my $value = $field->{value};
my $self = shift;
return $self->{name};
}
-sub search_group {
+sub field_class {
my $self = shift;
- return $self->{search_group};
+ return $self->{field_class};
}
sub search_field {
my $self = shift;
use OpenSRF::Utils::Logger qw/:logger/;
use OpenILS::Utils::CStoreEditor qw/:funcs/;
use OpenILS::Elastic::BibSearch;
-use OpenILS::Utils::Normalize;
use base qw/OpenILS::Elastic::BibSearch/;
my @seen_fields;
sub add_dynamic_field {
- my ($self, $fields, $purpose, $search_group, $name, $weight, $normalizers) = @_;
+ my ($self, $fields, $purpose, $field_class, $name, $weight) = @_;
return unless $name;
$weight = '' if !$weight || $weight eq '_';
- $search_group = '' if !$search_group || $search_group eq '_';
- $normalizers = '' if !$normalizers || $normalizers eq '_';
+ $field_class = '' if !$field_class || $field_class eq '_';
- my $tag = $purpose . $search_group . $name;
+ my $tag = $purpose . $field_class . $name;
return if grep {$_ eq $tag} @seen_fields;
push(@seen_fields, $tag);
$logger->info("ES adding dynamic field purpose=$purpose ".
- "search_group=$search_group name=$name weight=$weight");
+ "field_class=$field_class name=$name weight=$weight");
my $field = OpenILS::Elastic::BibSearch::BibField->new(
purpose => $purpose,
- search_group => $search_group,
+ field_class => $field_class,
name => $name,
- weight => $weight,
- normalizers => $normalizers
+ weight => $weight
);
push(@$fields, $field);
my @rows = split(/\n/, $output);
for my $row (@rows) {
- my ($purpose, $search_group, $name, @tokens) = split(/ /, $row);
+ my ($purpose, $field_class, $name, @tokens) = split(/ /, $row);
- $search_group = '' if ($search_group || '') eq '_';
+ $field_class = '' if ($field_class || '') eq '_';
my $value = join(' ', @tokens);
my $field = {
purpose => $purpose,
- search_group => $search_group,
+ field_class => $field_class,
name => $name,
value => $value
};
NULL::INT AS metabib_field,
crad.name,
crad.label,
- NULL AS search_group,
+ NULL AS field_class,
crad.sorter,
FALSE AS search_field,
FALSE AS facet_field,
cmf.id AS metabib_field,
cmf.name,
cmf.label,
- cmf.field_class AS search_group,
+ cmf.field_class,
FALSE AS sorter,
-- always treat identifier fields as non-search fields.
(cmf.field_class <> 'identifier' AND cmf.search_field) AS search_field,
CREATE OR REPLACE FUNCTION elastic.bib_record_attrs(bre_id BIGINT)
RETURNS TABLE (
- search_group TEXT,
+ field_class TEXT,
name TEXT,
source BIGINT,
value TEXT
AS $FUNK$
SELECT DISTINCT record.* FROM (
SELECT
- NULL::TEXT AS search_group,
+ NULL::TEXT AS field_class,
crad.name,
mrs.source,
mrs.value
-- record attributes
SELECT
- NULL::TEXT AS search_group,
+ NULL::TEXT AS field_class,
crad.name,
mraf.id AS source,
mraf.value
CREATE OR REPLACE FUNCTION elastic.bib_record_static_props(bre_id BIGINT)
RETURNS TABLE (
- search_group TEXT,
+ field_class TEXT,
name TEXT,
source BIGINT,
value TEXT
AS $FUNK$
SELECT DISTINCT record.* FROM (
SELECT
- cmf.field_class AS search_group,
+ cmf.field_class,
cmf.name,
props.source,
CASE WHEN cmf.joiner IS NOT NULL THEN
props.value
END AS value
FROM (
- SELECT * FROM metabib.title_field_entry mtfe WHERE mtfe.source = $1
+ SELECT field, source, value
+ FROM metabib.title_field_entry mtfe WHERE mtfe.source = $1
UNION
- SELECT * FROM metabib.author_field_entry mafe WHERE mafe.source = $1
+ SELECT field, source, value
+ FROM metabib.author_field_entry mafe WHERE mafe.source = $1
UNION
- SELECT * FROM metabib.subject_field_entry msfe WHERE msfe.source = $1
+ SELECT field, source, value
+ FROM metabib.subject_field_entry msfe WHERE msfe.source = $1
UNION
- SELECT * FROM metabib.series_field_entry msrfe WHERE msrfe.source = $1
+ SELECT field, source, value
+ FROM metabib.series_field_entry msrfe WHERE msrfe.source = $1
UNION
- SELECT * FROM metabib.keyword_field_entry mkfe WHERE mkfe.source = $1
+ SELECT field, source, value
+ FROM metabib.keyword_field_entry mkfe WHERE mkfe.source = $1
UNION
- SELECT * FROM metabib.identifier_field_entry mife WHERE mife.source = $1
+ SELECT field, source, value
+ FROM metabib.identifier_field_entry mife WHERE mife.source = $1
+ UNION
+ SELECT field, source, value
+ FROM metabib.facet_entry mfe WHERE mfe.source = $1
) props
JOIN config.metabib_field cmf ON (cmf.id = props.field)
WHERE cmf.elastic_field
CREATE OR REPLACE FUNCTION elastic.bib_record_dynamic_props(bre_id BIGINT)
RETURNS TABLE (
- search_group TEXT,
+ field_class TEXT,
name TEXT,
source BIGINT,
value TEXT
AS $FUNK$
SELECT DISTINCT record.* FROM (
SELECT
- cmf.field_class AS search_group,
+ cmf.field_class,
cmf.name,
props.source,
CASE WHEN cmf.joiner IS NOT NULL THEN
CREATE OR REPLACE FUNCTION elastic.bib_record_properties(bre_id BIGINT)
RETURNS TABLE (
- search_group TEXT,
+ field_class TEXT,
name TEXT,
source BIGINT,
value TEXT
'vr_format'
);
+-- Bill's elastic VM for testing.
+UPDATE elastic.node
+ SET host = 'elastic.gamma', port = 80, path = '/elastic/node1'
+ WHERE id = 1;
+
*/
my $stop_record;
my $modified_since;
my $max_duration;
-my $use_xslt;
+my $bib_transform;
my $batch_size = 500;
# Database settings read from ENV by default.
'modified-since=s' => \$modified_since,
'max-duration=s' => \$max_duration,
'batch-size=s' => \$batch_size,
- 'use-xslt=s' => \$use_xslt,
+ 'bib-transform=s' => \$bib_transform,
'db-name=s' => \$db_name,
'db-host=s' => \$db_host,
'db-port=s' => \$db_port,
if ($index_class eq 'bib-search') {
- if ($use_xslt) {
+ if ($bib_transform) {
$es = OpenILS::Elastic::BibSearch::XSLT->new(
cluster => $cluster,
index_name => $index_name,
write_mode => 1,
- xsl_file => $use_xslt
+ xsl_file => $bib_transform
);
} else {