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 sh...@apache.org on 2009/02/03 22:09:06 UTC
svn commit: r740445 - in /lucene/solr/trunk: CHANGES.txt
src/java/org/apache/solr/search/ValueSourceParser.java
src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
Author: shalin
Date: Tue Feb 3 21:09:04 2009
New Revision: 740445
URL: http://svn.apache.org/viewvc?rev=740445&view=rev
Log:
SOLR-966 -- Enhance the map function query to take in an optional default value
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/src/java/org/apache/solr/search/ValueSourceParser.java
lucene/solr/trunk/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=740445&r1=740444&r2=740445&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Tue Feb 3 21:09:04 2009
@@ -143,6 +143,8 @@
31. SOLR-763: Add support for Lucene's PositionFilter (Mck SembWever via shalin)
+32. SOLR-966: Enhance the map() function query to take in an optional default value (Noble Paul, shalin)
+
Optimizations
----------------------
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/ValueSourceParser.java?rev=740445&r1=740444&r2=740445&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/ValueSourceParser.java Tue Feb 3 21:09:04 2009
@@ -160,7 +160,8 @@
float min = fp.parseFloat();
float max = fp.parseFloat();
float target = fp.parseFloat();
- return new RangeMapFloatFunction(source,min,max,target);
+ Float def = fp.hasMoreArguments() ? fp.parseFloat() : null;
+ return new RangeMapFloatFunction(source,min,max,target,def);
}
public void init(NamedList args) {
Modified: lucene/solr/trunk/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java?rev=740445&r1=740444&r2=740445&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java Tue Feb 3 21:09:04 2009
@@ -34,12 +34,14 @@
protected final float min;
protected final float max;
protected final float target;
+ protected final Float defaultVal;
- public RangeMapFloatFunction(ValueSource source, float min, float max, float target) {
+ public RangeMapFloatFunction(ValueSource source, float min, float max, float target, Float def) {
this.source = source;
this.min = min;
this.max = max;
this.target = target;
+ this.defaultVal = def;
}
public String description() {
@@ -51,7 +53,7 @@
return new DocValues() {
public float floatVal(int doc) {
float val = vals.floatVal(doc);
- return (val>=min && val<=max) ? target : val;
+ return (val>=min && val<=max) ? target : (defaultVal == null ? val : defaultVal);
}
public int intVal(int doc) {
return (int)floatVal(doc);
@@ -74,11 +76,13 @@
public int hashCode() {
int h = source.hashCode();
h ^= (h << 10) | (h >>> 23);
- Float.floatToIntBits(min);
+ h += Float.floatToIntBits(min);
h ^= (h << 14) | (h >>> 19);
h += Float.floatToIntBits(max);
h ^= (h << 13) | (h >>> 20);
h += Float.floatToIntBits(target);
+ if (defaultVal != null)
+ h += defaultVal.hashCode();
return h;
}
@@ -88,6 +92,7 @@
return this.min == other.min
&& this.max == other.max
&& this.target == other.target
- && this.source.equals(other.source);
+ && this.source.equals(other.source)
+ && (this.defaultVal == other.defaultVal || (this.defaultVal != null && this.defaultVal.equals(other.defaultVal)));
}
}