Bug 12478: working on authority results
Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Jesse Weaver <jweaver@bywatersolutions.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
This commit is contained in:
parent
e74e5a504c
commit
e00fadad67
2 changed files with 97 additions and 1 deletions
|
@ -93,6 +93,27 @@ sub search {
|
|||
return $results;
|
||||
}
|
||||
|
||||
=head2 count
|
||||
|
||||
my $count = $searcher->count($query);
|
||||
|
||||
This mimics a search request, but just gets the result count instead. That's
|
||||
faster than pulling all the data in, ususally.
|
||||
|
||||
=cut
|
||||
|
||||
sub count {
|
||||
my ($self, $query) = @_;
|
||||
|
||||
my $params = $self->get_elasticsearch_params();
|
||||
$self->store(
|
||||
Catmandu::Store::ElasticSearch->new( %$params, trace_calls => 1, ) );
|
||||
# TODO something like this should work, but doesn't seem to just yet.
|
||||
# my $count = $self->store->bag->count($query);
|
||||
my $count = $self->store->bag->search(%$query)->total;
|
||||
return $count;
|
||||
}
|
||||
|
||||
=head2 search_compat
|
||||
|
||||
my ( $error, $results, $facets ) = $search->search_compat(
|
||||
|
@ -149,9 +170,11 @@ results in a form the same as L<C4::AuthoritiesMarc::SearchAuthorities>.
|
|||
sub search_auth_compat {
|
||||
my $self = shift;
|
||||
|
||||
# TODO handle paging
|
||||
my $database = Koha::Database->new();
|
||||
my $schema = $database->schema();
|
||||
my $res = $self->search(@_);
|
||||
my $bib_searcher = Koha::SearchEngine::Elasticsearch::Search->new({index => 'biblios'});
|
||||
my @records;
|
||||
$res->each(
|
||||
sub {
|
||||
|
@ -163,7 +186,8 @@ sub search_auth_compat {
|
|||
# rather than hard-coded conversions.
|
||||
# Our results often come through as nested arrays, to fix this
|
||||
# requires changes in catmandu.
|
||||
$result{authid} = $record->{ 'Local-Number' }[0][0];
|
||||
my $authid = $record->{ 'Local-Number' }[0][0];
|
||||
$result{authid} = $authid;
|
||||
|
||||
# TODO put all this info into the record at index time so we
|
||||
# don't have to go and sort it all out now.
|
||||
|
@ -198,12 +222,39 @@ sub search_auth_compat {
|
|||
$result{summary} =
|
||||
C4::AuthoritiesMarc::BuildSummary( $marc, $result{authid},
|
||||
$authtypecode );
|
||||
$result{used} = $self->count_auth_use($bib_searcher, $authid);
|
||||
push @records, \%result;
|
||||
}
|
||||
);
|
||||
return ( \@records, $res->total );
|
||||
}
|
||||
|
||||
=head2 count_auth_use
|
||||
|
||||
my $count = $auth_searcher->count_auth_use($bib_searcher, $authid);
|
||||
|
||||
This runs a search to determine the number of records that reference the
|
||||
specified authid. C<$bib_searcher> must be something compatible with
|
||||
elasticsearch, as the query is built in this function.
|
||||
|
||||
=cut
|
||||
|
||||
sub count_auth_use {
|
||||
my ($self, $bib_searcher, $authid) = @_;
|
||||
|
||||
my $query = {
|
||||
query => {
|
||||
filtered => {
|
||||
query => { match_all => {} },
|
||||
filter => { term => { an => $authid } }
|
||||
}
|
||||
}
|
||||
};
|
||||
$bib_searcher->count($query);
|
||||
}
|
||||
|
||||
|
||||
|
||||
=head2 json2marc
|
||||
|
||||
my $marc = $self->json2marc($marc_json);
|
||||
|
|
|
@ -145,6 +145,51 @@ INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `m
|
|||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','onloan',FALSE,'boolean','952q','995n','952q');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','itemnumber',FALSE,'number','9529','9959','9529');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','issues',FALSE,'sum','952l',NULL,'952l'); -- Apparently not tracked in unimarc
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','1009','7009','1009');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','1109','7019','1109');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','1119','7029','1119');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','1309','7109','1309');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','2459','7119','2459');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','4009','7129','4409');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','4109','7169','4909');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','4409','7209','6009');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','4909','7219','6109');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6009','7229','6119');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6109','7309','6309');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6119','5009','6509');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6309','5019','6519');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6509','5039','6529');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6519','5109','6539');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6529','5129','6549');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6539','5139','6559');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6549','5149','6569');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6559','5159','6579');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6569','5169','6909');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6579','5179','7009');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','6909','5189','7109');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','7009','5199','7119');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','7109','5209','7309');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','7119','5309','8009');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','7309','5319','8109');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','7519','5329','8119');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','8009','5409','8309');
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','8109','5419',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','8119','5459',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number','8309','5609',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6009',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6019',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6029',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6049',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6059',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6069',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6079',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6089',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6109',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6159',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6169',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6179',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6209',NULL);
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('biblios','an',FALSE,'number',NULL,'6219',NULL);
|
||||
|
||||
-- Authorities: incomplete
|
||||
INSERT INTO `elasticsearch_mapping` (`indexname`, `mapping`, `facet`, `type`, `marc21`, `unimarc`, `normarc`) VALUES ('authorities','Local-Number',FALSE,'string','001',NULL,'001');
|
||||
|
|
Loading…
Reference in a new issue