Bug 5651: Question marks break searches w/ICU

When a user is doing a simple keyword search, they should not be expected to
deal with the magical behavior of question marks in Zebra. This fix escapes
question marks, and reduces the number of false positives for identifying a
"simple keyword search."

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
(cherry picked from commit ad206a73f8)

Signed-off-by: Chris Nighswonger <chris.nighswonger@gmail.com>
This commit is contained in:
Jared Camins-Esakov 2011-04-05 15:48:03 +02:00 committed by Chris Nighswonger
parent ecfab4b571
commit d5cb87cf76
1 changed files with 3 additions and 1 deletions

View File

@ -1093,10 +1093,12 @@ sub buildQuery {
my $indexes_set;
# If the user is sophisticated enough to specify an index, turn off field weighting, stemming, and stopword handling
if ( $operands[$i] =~ /(:|=)/ || $scan ) {
if ( $operands[$i] =~ /\w(:|=)/ || $scan ) {
$weight_fields = 0;
$stemming = 0;
$remove_stopwords = 0;
} else {
$operands[$i] =~ s/\?/{?}/g; # need to escape question marks
}
my $operand = $operands[$i];
my $index = $indexes[$i];