You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by ko...@apache.org on 2010/03/01 15:27:45 UTC

svn commit: r917547 - in /lucene/solr/trunk/src: java/org/apache/solr/search/QueryParsing.java test/org/apache/solr/search/QueryParsingTest.java

Author: koji
Date: Mon Mar  1 14:27:45 2010
New Revision: 917547

URL: http://svn.apache.org/viewvc?rev=917547&view=rev
Log:
SOLR-1297: fix for more deep function

Modified:
    lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
    lucene/solr/trunk/src/test/org/apache/solr/search/QueryParsingTest.java

Modified: lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java?rev=917547&r1=917546&r2=917547&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/QueryParsing.java Mon Mar  1 14:27:45 2010
@@ -264,7 +264,7 @@
             needOrder = false;
           }
         }
-      } else if (chars[i] == '(' && functionDepth == 0) {
+      } else if (chars[i] == '(' && functionDepth >= 0) {
         buffer.append(chars[i]);
         functionDepth++;
       } else if (chars[i] == ')' && functionDepth > 0) {

Modified: lucene/solr/trunk/src/test/org/apache/solr/search/QueryParsingTest.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/search/QueryParsingTest.java?rev=917547&r1=917546&r2=917547&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/search/QueryParsingTest.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/search/QueryParsingTest.java Mon Mar  1 14:27:45 2010
@@ -100,6 +100,12 @@
     //Not thrilled about the fragility of string matching here, but...
     //the value sources get wrapped, so the out field is different than the input
     assertEquals(flds[0].getField(), "pow(float(weight),const(2.0))");
+    
+    //test functions (more deep)
+    sort = QueryParsing.parseSort("sum(product(r_f,sum(d_f,t_f,1)),a_f) asc", schema);
+    flds = sort.getSort();
+    assertEquals(flds[0].getType(), SortField.CUSTOM);
+    assertEquals(flds[0].getField(), "sum(product(float(r_f),sum(float(d_f),float(t_f),const(1.0))),float(a_f))");
 
     sort = QueryParsing.parseSort("pow(weight,                 2)         desc", schema);
     flds = sort.getSort();