[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