You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2010/09/09 00:04:20 UTC
svn commit: r995264 - in /lucene/dev/trunk/solr/src:
java/org/apache/solr/search/QueryParsing.java
test/org/apache/solr/TestDistributedSearch.java
test/org/apache/solr/search/TestQueryTypes.java
Author: yonik
Date: Wed Sep 8 22:04:19 2010
New Revision: 995264
URL: http://svn.apache.org/viewvc?rev=995264&view=rev
Log:
SOLR-2110: remove restrictions on local param substitution
Modified:
lucene/dev/trunk/solr/src/java/org/apache/solr/search/QueryParsing.java
lucene/dev/trunk/solr/src/test/org/apache/solr/TestDistributedSearch.java
lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestQueryTypes.java
Modified: lucene/dev/trunk/solr/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/java/org/apache/solr/search/QueryParsing.java?rev=995264&r1=995263&r2=995264&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/dev/trunk/solr/src/java/org/apache/solr/search/QueryParsing.java Wed Sep 8 22:04:19 2010
@@ -178,15 +178,15 @@ public class QueryParsing {
// saw equals, so read value
p.pos++;
ch = p.peek();
+ boolean deref = false;
+ if (ch == '$') {
+ p.pos++;
+ ch = p.peek();
+ deref = true; // dereference whatever value is read by treating it as a variable name
+ }
+
if (ch == '\"' || ch == '\'') {
val = p.getQuotedString();
- } else if (ch == '$') {
- p.pos++;
- // dereference parameter
- String pname = p.getId();
- if (params != null) {
- val = params.get(pname);
- }
} else {
// read unquoted literal ended by whitespace or '}'
// there is no escaping.
@@ -203,6 +203,12 @@ public class QueryParsing {
p.pos++;
}
}
+
+ if (deref) { // dereference parameter
+ if (params != null) {
+ val = params.get(val);
+ }
+ }
}
if (target != null) target.put(id, val);
}
Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/TestDistributedSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/TestDistributedSearch.java?rev=995264&r1=995263&r2=995264&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/TestDistributedSearch.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/TestDistributedSearch.java Wed Sep 8 22:04:19 2010
@@ -177,7 +177,7 @@ public class TestDistributedSearch exten
handle.put("facet_fields", SKIPVAL);
query("q","*:*", "rows",0, "facet","true", "facet.field",t1,"facet.limit",5, "facet.shard.limit",5);
// check a complex key name
- // query("q","*:*", "rows",0, "facet","true", "facet.field","{!key=a/b/c}"+t1,"facet.limit",5, "facet.shard.limit",5);
+ query("q","*:*", "rows",0, "facet","true", "facet.field","{!key=a/b/c}"+t1,"facet.limit",5, "facet.shard.limit",5);
handle.remove("facet_fields");
Modified: lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestQueryTypes.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestQueryTypes.java?rev=995264&r1=995263&r2=995264&view=diff
==============================================================================
--- lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestQueryTypes.java (original)
+++ lucene/dev/trunk/solr/src/test/org/apache/solr/search/TestQueryTypes.java Wed Sep 8 22:04:19 2010
@@ -210,6 +210,14 @@ public class TestQueryTypes extends Abst
,"//result[@numFound='2']"
);
+ // test wacky param names
+ assertQ(
+ req("q","{!prefix f=$a/b/c v=$'a b/c'}"
+ ,"a/b/c","v_t", "a b/c", "hel"
+ )
+ ,"//result[@numFound='2']"
+ );
+
assertQ("test param subst with literal",
req("q","{!prefix f=$myf v=$my.v}"
,"myf","v_s", "my.v", "{!lit"