8471158160
One of the ideas behind authority records is that users who search for one term should have related terms (according to the authority file) suggested to them. At the moment, Koha doesn't do that. Adding an authority searching step to regular searches and displaying any suggestions in a "Did you mean" bar at the top of the results would be very useful. This commit adds a Koha::SuggestionEngine class which is in charge of getting suggestions from individual suggestion engine plugins, which much be in the Koha::SuggestionEngine::Plugin::* namespace, and extend Koha::SuggestionEngine::Base. Suggestions are loaded asynchronously using AJAX, and a link to a page with suggestions is provided for users with Javascript turned off. The AuthorityFile suggestion engine plugin looks up the specified search terms in the authority file and then suggests searches for records using matching authorities. Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> Rebased 2 August 2012 and incorporated QA feedback Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> Test plan: - Verified database update added system preference correctly, pref defaults to OFF - Verified search results and detail pages in OPAC and staff still worked the same as before * for no results * with results - Activated system preference and tested various searches * Searches from simple search * Searches from advanced search * Search links in records - Deactivated Javascript - verified fallback works correctly Notes: - Suggested terms can include autorities with no linked records. - When combining more than one search option using advanced search this results in "no suggestions" more often. Feature works best from simple search. Overall great feature making use of authorities in a user friendly way! Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> Rebased on latest master 2012-09-10 Signed-off-by: wajasu <matted-34813@mypacks.net>
101 lines
2.5 KiB
Perl
Executable file
101 lines
2.5 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
# Copyright 2012 C & P Bibliography Services
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it under the
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
# Foundation; either version 2 of the License, or (at your option) any later
|
|
# version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with Koha; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
=head1 NAME
|
|
|
|
opac-suggestion.pl : script to render suggestions for the OPAC
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
=cut
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This script produces suggestions for the OPAC given a search string.
|
|
|
|
It takes the following parameters:
|
|
|
|
=over 8
|
|
|
|
=item I<q>
|
|
|
|
Required. Query string.
|
|
|
|
=item I<render>
|
|
|
|
If set to 'stub' render a stub HTML page suitable for inclusion into a
|
|
div via AJAX. If set to 'standalone', return a full page instead of the stub.
|
|
If not set, return JSON.
|
|
|
|
=item I<count>
|
|
|
|
Number of suggestions to display. Defaults to 4 in stub mode, 20 otherwise.
|
|
|
|
=back
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use C4::Auth;
|
|
use C4::Context;
|
|
use C4::Output;
|
|
use CGI;
|
|
use JSON;
|
|
use Koha::SuggestionEngine;
|
|
|
|
my $query = new CGI;
|
|
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
my $search = $query->param('q') || '';
|
|
my $render = $query->param('render') || '';
|
|
my $count = $query->param('count') || ( $render eq 'stub' ? 4 : 20 );
|
|
|
|
# open template
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "svc/suggestion.tt",
|
|
query => $query,
|
|
type => "opac",
|
|
authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
unless ( C4::Context->preference('DidYouMeanFromAuthorities') ) {
|
|
print $query->header;
|
|
exit;
|
|
}
|
|
|
|
my $suggestor = Koha::SuggestionEngine->new( { plugins => ('AuthorityFile') } );
|
|
|
|
my $suggestions =
|
|
$suggestor->get_suggestions( { search => $search, count => $count } );
|
|
|
|
if ($render) {
|
|
$template->{VARS}->{render} = $render;
|
|
$template->{VARS}->{suggestions} = $suggestions if $suggestions;
|
|
output_html_with_http_headers $query, $cookie, $template->output;
|
|
}
|
|
else {
|
|
print $query->header;
|
|
print to_json($suggestions);
|
|
}
|