You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jd...@apache.org on 2013/04/22 17:31:05 UTC

svn commit: r1470577 - in /lucene/dev/trunk/solr: CHANGES.txt core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java

Author: jdyer
Date: Mon Apr 22 15:31:04 2013
New Revision: 1470577

URL: http://svn.apache.org/r1470577
Log:
SOLR-4333: edismax to not double-escape colons if already escaped by client application

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1470577&r1=1470576&r2=1470577&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Apr 22 15:31:04 2013
@@ -64,6 +64,9 @@ Bug Fixes
 
 * SOLR-4741: Deleting a collection should set DELETE_DATA_DIR to true. 
   (Mark Miller)
+  
+* SOLR-4333: edismax parser to not double-escape colons if already escaped by 
+  the client application (James Dyer, Robert J. van der Boon)
 
 Other Changes
 ----------------------

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java?rev=1470577&r1=1470576&r2=1470577&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ExtendedDismaxQParser.java Mon Apr 22 15:31:04 2013
@@ -812,7 +812,7 @@ public class ExtendedDismaxQParser exten
           clause.raw = s.substring(start, pos);
           // escape colons, except for "match all" query
           if(!"*:*".equals(clause.raw)) {
-            clause.raw = clause.raw.replaceAll(":", "\\\\:");
+            clause.raw = clause.raw.replaceAll("([^\\\\]):", "$1\\\\:");
           }
         } else {
           clause.raw = s.substring(start, pos);

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1470577&r1=1470576&r2=1470577&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Mon Apr 22 15:31:04 2013
@@ -847,6 +847,15 @@ public class TestExtendedDismaxParser ex
             "defType", "edismax")
         , "*[count(//doc)=1]");
     
+    assertQ(
+        "Might be double-escaping a client-escaped colon", 
+        req("q", "text_sw:(theos OR thistokenhasa\\:preescapedcolon OR theou)", "defType", "edismax", "qf", "id"),
+        "*[count(//doc)=3]");
+    assertQ(
+        "Might be double-escaping a client-escaped colon", 
+        req("q", "text_sw:(theos OR thistokenhasa\\:preescapedcolon OR theou)", "defType", "edismax", "qf", "text"),
+        "*[count(//doc)=3]");    
+    
   }
   
   /**