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

Marcel de Rooy M.de.Rooy at rijksmuseum.nl
Thu Aug 25 13:35:18 CEST 2011


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.
---
 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.6.0.6



More information about the Koha-patches mailing list