You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2012/08/31 01:29:01 UTC
svn commit: r1379225 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/search/ValueSourceParser.java
core/src/test/org/apache/solr/search/QueryEqualityTest.java
Author: hossman
Date: Thu Aug 30 23:29:00 2012
New Revision: 1379225
URL: http://svn.apache.org/viewvc?rev=1379225&view=rev
Log:
SOLR-2768: new "mod(x,y)" function for computing the modulus of two value sources
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1379225&r1=1379224&r2=1379225&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Thu Aug 30 23:29:00 2012
@@ -48,6 +48,9 @@ New Features
* SOLR-3670: New CountFieldValuesUpdateProcessorFactory makes it easy to index
the number of values in another field for later use at query time. (hossman)
+* SOLR-2768: new "mod(x,y)" function for computing the modulus of two value
+ sources. (hossman)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1379225&r1=1379224&r2=1379225&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java Thu Aug 30 23:29:00 2012
@@ -177,6 +177,23 @@ public abstract class ValueSourceParser
return new DivFloatFunction(a, b);
}
});
+ addParser("mod", new ValueSourceParser() {
+ @Override
+ public ValueSource parse(FunctionQParser fp) throws ParseException {
+ ValueSource a = fp.parseValueSource();
+ ValueSource b = fp.parseValueSource();
+ return new DualFloatFunction(a, b) {
+ @Override
+ protected String name() {
+ return "mod";
+ }
+ @Override
+ protected float func(int doc, FunctionValues aVals, FunctionValues bVals) {
+ return aVals.floatVal(doc) % bVals.floatVal(doc);
+ }
+ };
+ }
+ });
addParser("map", new ValueSourceParser() {
@Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java?rev=1379225&r1=1379224&r2=1379225&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/search/QueryEqualityTest.java Thu Aug 30 23:29:00 2012
@@ -329,6 +329,13 @@ public class QueryEqualityTest extends S
"div(field(foo_i), sub(4,bar_i))");
}
+ public void testFuncMod() throws Exception {
+ assertFuncEquals("mod(5,4)", "mod(5, 4)");
+ assertFuncEquals("mod(foo_i,4)", "mod(foo_i, 4)",
+ "mod(field('foo_i'), 4)");
+ assertFuncEquals("mod(foo_i,sub(4,field('bar_i')))",
+ "mod(field(foo_i), sub(4,bar_i))");
+ }
public void testFuncMap() throws Exception {
assertFuncEquals("map(field(foo_i), 0, 45, 100)",
"map(foo_i, 0.0, 45, 100)");