LP875819: Fix SRU and Z39.50 default search index failures
authorDan Scott <dscott@laurentian.ca>
Sun, 16 Oct 2011 16:45:52 +0000 (12:45 -0400)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Wed, 19 Oct 2011 21:16:17 +0000 (17:16 -0400)
Per http://www.loc.gov/standards/sru/specs/cql.html :

All parts of CQL are case insensitive [...] If any case insensitive
part of CQL is specified with both upper and lower case, it is
for aesthetic purposes only.

So fold the SRU qualifier and relation to lower case. This then
matches the srw.serverchoice entry that we already have in
config.metabib_search_alias so that default searches will successfully
point to the keyword index.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/WWW/SuperCat.pm

index 708cc22..9a36347 100644 (file)
@@ -1954,6 +1954,15 @@ sub sru_search {
         if ( $qualifier ) {
             my ($qset, $qname) = split(/\./, $qualifier);
 
+            # Per http://www.loc.gov/standards/sru/specs/cql.html
+            # "All parts of CQL are case insensitive [...] If any case insensitive
+            # part of CQL is specified with both upper and lower case, it is for
+            # aesthetic purposes only."
+
+            # So fold the qualifier and relation to lower case
+            $qset = lc($qset);
+            $qname = lc($qname);
+
             if ( exists($qualifier_map{$qset}{$qname}) ) {
                 $qualifier = $qualifier_map{$qset}{$qname}{'index'} || 'kw';
                 $log->debug("SRU toEvergreen: $qset, $qname   $qualifier_map{$qset}{$qname}{'index'}\n");