Koha/opac/svc/suggestion
Jared Camins-Esakov d2cd2e09aa Bug 8726: ExplodedTerms suggestion plugin (functionality)
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.
2012-09-28 17:08:21 +02:00

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);
}