[Koha-patches] [PATCH] [SIGNED-OFF] 6786: False detection of index names in Search; make index names case insensitive

Frédéric Demians f.demians at tamil.fr
Thu Sep 1 13:52:32 CEST 2011


From: Marcel de Rooy <m.de.rooy at rijksmuseum.nl>

Fixing the regex to detect index names in ccl queries.  Changing loop
structure: looping through the index candidates in the query is faster than
testing every index name with a regex.  Making the index comparison case
insensitive will benefit users misspelling the case of an index; Zebra does not
care about it.  Test the change by searching on a word followed by a : or =
character.  Previously, when that word contained an index name like an or nb,
the search would crash.

Signed-off-by: Frédéric Demians <f.demians at tamil.fr>
---
 C4/Search.pm |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/C4/Search.pm b/C4/Search.pm
index c3cff65..e16772d 100644
--- a/C4/Search.pm
+++ b/C4/Search.pm
@@ -1071,15 +1071,14 @@ sub buildQuery {
 
     my $stopwords_removed;    # flag to determine if stopwords have been removed
 
-    my $cclq;
+    my $cclq=0;
     my $cclindexes = getIndexes();
-    if( $query !~ /\s*ccl=/ ){
-        for my $index (@$cclindexes){
-            if($query =~ /($index)(,?\w)*[:=]/){
-                $cclq = 1;
-            }
-        }
-        $query = "ccl=$query" if($cclq);
+    if( $query !~ /\s*ccl=/ ) {
+      while(!$cclq && $query=~/(?:^|\W)(\w+)(,\w+)*[:=]/g) {
+        my $dx=lc($1);
+        $cclq= grep {lc($_) eq $dx} @$cclindexes;
+      }
+      $query = "ccl=$query" if $cclq;
     }
 
 # for handling ccl, cql, pqf queries in diagnostic mode, skip the rest of the steps
-- 
1.7.6.1



More information about the Koha-patches mailing list