d2cd2e09aa
When working with hierarchical subject headings, it is sometimes helpful to do a search for all records with a specific subject, plus broader/narrower/related subjects. This patch adds a suggestion plugin for these "exploded" subject searches to Koha. Note that this patch depends on both bug 8211 AND bug 8209. To test (NOTE: this test plan covers both 8211 and 8726): 1) Make sure you have a bunch of hierarchical subjects. I created geographical subjects for "Arizona," "United States," and "Phoenix," and linked them together using 551s, and made sure I had a half dozen records linking to each (but not all to all three). 2) Do a search for su-br:Arizona (or choose "Subject and broader terms" on the advanced search screen with "more options" displayed), and check that you get the records with the subject "Arizona" and the records with the subject "United States" 3) Do a search for su-na:Arizona (or choose "Subject and narrower terms" on the advanced search screen with "more options" displayed), and check that you get the records with the subject "Arizona" and the records with the subject "Phoenix" 4) Do a search for su-rl:Arizona (or choose "Subject and related terms" on the advanced search screen with "more options" displayed), and check that you get the records with the subject "Arizona," the records with the subject "United States," and the records with the subject "Phoenix" 5) Ensure that other searches still work (keyword, subject, ccl, whatever) 6) Use "Did you mean?" page in admin section to enable ExplodedTerms plugin 7) Do a keyword search on the OPAC, confirm that searching for exploded terms is suggested. 8) Do a subject search on the OPAC, confirm that searching for exploded terms is suggested. 9) Do a non-keyword, non-subject search on the OPAC, confirm that searching for exploded terms is NOT suggested. 10) Disable ExplodedTerms plugin and enable AuthorityFile plugin. 11) Do search on OPAC, confirm suggestions are made from authority file. 12) Sign off Signed-off-by: wajasu <matted-34813@mypacks.net> Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> Split into two patches. This patch includes only the functionality.
109 lines
2.6 KiB
Perl
Executable file
109 lines
2.6 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,
|
|
}
|
|
);
|
|
|
|
my @plugins = ();
|
|
|
|
my $pluginsconfig = from_json(C4::Context->preference('OPACdidyoumean') || '[]');
|
|
|
|
foreach my $plugin (@$pluginsconfig) {
|
|
push @plugins, $plugin->{name} if ($plugin->{enabled});
|
|
}
|
|
|
|
unless ( @plugins ) {
|
|
print $query->header;
|
|
exit;
|
|
}
|
|
|
|
my $suggestor = Koha::SuggestionEngine->new( { plugins => \@plugins } );
|
|
|
|
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);
|
|
}
|