Bug 23719: Allow searching specific fields for matching authorities in ES
To test: 1 - Export your authorities via Tools->Export data 2 - Define a record matching rule in Admin->Record matchign rules Use index: LC-card-number field: 010$a 3 - Stage the exported records for import and use the rule created above for matching 4 - The process does not complete 5 - Check intranet error logs - exception on unknown marclist 6 - Apply patch 7 - Repeat 8 - Success! 9 - prove -v t/db_dependent/Koha/SearchEngine/Elasticsearch/QueryBuilder.t Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
parent
4c0786a110
commit
33595e1a3e
2 changed files with 18 additions and 10 deletions
|
@ -469,16 +469,16 @@ sub build_authorities_query_compat {
|
|||
$marclist = [map(lc, @{$marclist})];
|
||||
$orderby = lc $orderby;
|
||||
|
||||
my @indexes;
|
||||
# Make sure everything exists
|
||||
foreach my $m (@$marclist) {
|
||||
Koha::Exceptions::WrongParameter->throw("Invalid marclist field provided: $m")
|
||||
unless exists $koha_to_index_name->{$m};
|
||||
push @indexes, exists $koha_to_index_name->{$m} ? $koha_to_index_name->{$m} : $m;
|
||||
}
|
||||
for ( my $i = 0 ; $i < @$value ; $i++ ) {
|
||||
next unless $value->[$i]; #clean empty form values, ES doesn't like undefined searches
|
||||
push @searches,
|
||||
{
|
||||
where => $koha_to_index_name->{$marclist->[$i]},
|
||||
where => $indexes[$i],
|
||||
operator => $operator->[$i],
|
||||
value => $value->[$i],
|
||||
};
|
||||
|
|
|
@ -91,7 +91,8 @@ my $clear_search_fields_cache = sub {
|
|||
};
|
||||
|
||||
subtest 'build_authorities_query_compat() tests' => sub {
|
||||
plan tests => 55;
|
||||
|
||||
plan tests => 56;
|
||||
|
||||
my $qb;
|
||||
|
||||
|
@ -184,12 +185,19 @@ subtest 'build_authorities_query_compat() tests' => sub {
|
|||
"authorities type code is used as filter"
|
||||
);
|
||||
|
||||
# Failing case
|
||||
throws_ok {
|
||||
$qb->build_authorities_query_compat( [ 'tomas' ], undef, undef, ['contains'], [$search_term], 'AUTH_TYPE', 'asc' );
|
||||
}
|
||||
'Koha::Exceptions::WrongParameter',
|
||||
'Exception thrown on invalid value in the marclist param';
|
||||
# Authorities marclist check
|
||||
$query = $qb->build_authorities_query_compat( [ 'tomas','mainentry' ], undef, undef, ['contains'], [$search_term,$search_term], 'AUTH_TYPE', 'asc' );
|
||||
is_deeply(
|
||||
$query->{query}->{bool}->{must}[0]->{query_string}->{default_field},
|
||||
'tomas',
|
||||
"If no mapping for marclist the index is passed through as defined"
|
||||
);
|
||||
is_deeply(
|
||||
$query->{query}->{bool}->{must}[1]->{query_string}{default_field},
|
||||
'heading',
|
||||
"If mapping found for marclist the index is passed through converted"
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
subtest 'build_query tests' => sub {
|
||||
|
|
Loading…
Reference in a new issue