You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by bu...@apache.org on 2011/02/22 02:01:11 UTC

svn commit: r1073192 [27/32] - in /lucene/dev/branches/realtime_search: ./ dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/lucene/contrib/ant/ dev-tools/idea/lucene/contrib/demo/ dev-tools/idea/lucene/contrib/highlighter/ dev-tools/idea/lucene/...

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java Tue Feb 22 01:00:39 2011
@@ -43,10 +43,12 @@ public class JoinDocFreqValueSource exte
     this.qfield = qfield;
   }
 
+  @Override
   public String description() {
     return NAME + "(" + field +":("+qfield+"))";
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException 
   {
     final DocTerms terms = cache.getTerms(readerContext.reader, field, true );
@@ -55,6 +57,7 @@ public class JoinDocFreqValueSource exte
     return new DocValues() {
       BytesRef ref = new BytesRef();
 
+      @Override
       public int intVal(int doc) 
       {
         try {
@@ -68,28 +71,34 @@ public class JoinDocFreqValueSource exte
         }
       }
 
+      @Override
       public float floatVal(int doc) {
         return (float)intVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long)intVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return (double)intVal(doc);
       }
 
+      @Override
       public String strVal(int doc) {
         return intVal(doc) + "";
       }
 
+      @Override
       public String toString(int doc) {
         return description() + '=' + intVal(doc);
       }
     };
   }
   
+  @Override
   public boolean equals(Object o) {
     if (o.getClass() !=  JoinDocFreqValueSource.class) return false;
     JoinDocFreqValueSource other = (JoinDocFreqValueSource)o;
@@ -97,6 +106,7 @@ public class JoinDocFreqValueSource exte
     return super.equals(other);
   }
 
+  @Override
   public int hashCode() {
     return qfield.hashCode() + super.hashCode();
   };

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -42,28 +42,36 @@ public class LinearFloatFunction extends
     this.intercept = intercept;
   }
   
+  @Override
   public String description() {
     return slope + "*float(" + source.description() + ")+" + intercept;
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final DocValues vals =  source.getValues(context, readerContext);
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return vals.floatVal(doc) * slope + intercept;
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
         return slope + "*float(" + vals.toString(doc) + ")+" + intercept;
       }
@@ -75,6 +83,7 @@ public class LinearFloatFunction extends
     source.createWeight(context, searcher);
   }
 
+  @Override
   public int hashCode() {
     int h = Float.floatToIntBits(slope);
     h = (h >>> 2) | (h << 30);
@@ -83,6 +92,7 @@ public class LinearFloatFunction extends
     return h + source.hashCode();
   }
 
+  @Override
   public boolean equals(Object o) {
     if (LinearFloatFunction.class != o.getClass()) return false;
     LinearFloatFunction other = (LinearFloatFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LongFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LongFieldSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LongFieldSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/LongFieldSource.java Tue Feb 22 01:00:39 2011
@@ -43,6 +43,7 @@ public class LongFieldSource extends Num
     super(creator);
   }
 
+  @Override
   public String description() {
     return "long(" + field + ')';
   }
@@ -51,32 +52,39 @@ public class LongFieldSource extends Num
     return Long.parseLong(extVal);
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final LongValues vals = cache.getLongs(readerContext.reader, field, creator);
     final long[] arr = vals.values;
 	final Bits valid = vals.valid;
     
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return (float) arr[doc];
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) arr[doc];
       }
 
+      @Override
       public long longVal(int doc) {
         return arr[doc];
       }
 
+      @Override
       public double doubleVal(int doc) {
         return arr[doc];
       }
 
+      @Override
       public String strVal(int doc) {
         return Long.toString(arr[doc]);
       }
 
+      @Override
       public String toString(int doc) {
         return description() + '=' + longVal(doc);
       }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -38,6 +38,7 @@ public abstract class MultiFloatFunction
   abstract protected String name();
   abstract protected float func(int doc, DocValues[] valsArr);
 
+  @Override
   public String description() {
     StringBuilder sb = new StringBuilder();
     sb.append(name()).append('(');
@@ -54,6 +55,7 @@ public abstract class MultiFloatFunction
     return sb.toString();
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final DocValues[] valsArr = new DocValues[sources.length];
     for (int i=0; i<sources.length; i++) {
@@ -61,21 +63,27 @@ public abstract class MultiFloatFunction
     }
 
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return func(doc, valsArr);
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
         StringBuilder sb = new StringBuilder();
         sb.append(name()).append('(');
@@ -100,10 +108,12 @@ public abstract class MultiFloatFunction
       source.createWeight(context, searcher);
   }
 
+  @Override
   public int hashCode() {
     return Arrays.hashCode(sources) + name().hashCode();
   }
 
+  @Override
   public boolean equals(Object o) {
     if (this.getClass() != o.getClass()) return false;
     MultiFloatFunction other = (MultiFloatFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/NumericFieldCacheSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/NumericFieldCacheSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/NumericFieldCacheSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/NumericFieldCacheSource.java Tue Feb 22 01:00:39 2011
@@ -32,6 +32,7 @@ public abstract class NumericFieldCacheS
     this.creator = creator;
   }
 
+  @Override
   public final boolean equals(Object o) {
     if (o.getClass() != this.getClass()) return false;
     NumericFieldCacheSource other = (NumericFieldCacheSource) o;
@@ -40,6 +41,7 @@ public abstract class NumericFieldCacheS
             this.creator.getClass() == other.creator.getClass();
   }
 
+  @Override
   public final int hashCode() {
     int h = creator == null ? this.getClass().hashCode() : creator.getClass().hashCode();
     h += super.hashCode();

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java Tue Feb 22 01:00:39 2011
@@ -52,11 +52,13 @@ public class OrdFieldSource extends Valu
     this.field = field;
   }
 
+  @Override
   public String description() {
     return "ord(" + field + ')';
   }
 
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final int off = readerContext.docBase;
     final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader;
@@ -66,35 +68,43 @@ public class OrdFieldSource extends Valu
         return readableValue;
       }
       
+      @Override
       public float floatVal(int doc) {
         return (float)sindex.getOrd(doc+off);
       }
 
+      @Override
       public int intVal(int doc) {
         return sindex.getOrd(doc+off);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long)sindex.getOrd(doc+off);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return (double)sindex.getOrd(doc+off);
       }
 
+      @Override
       public int ordVal(int doc) {
         return sindex.getOrd(doc+off);
       }
 
+      @Override
       public int numOrd() {
         return sindex.numOrd();
       }
 
+      @Override
       public String strVal(int doc) {
         // the string value of the ordinal, not the string itself
         return Integer.toString(sindex.getOrd(doc+off));
       }
 
+      @Override
       public String toString(int doc) {
         return description() + '=' + intVal(doc);
       }
@@ -119,11 +129,13 @@ public class OrdFieldSource extends Valu
     };
   }
 
+  @Override
   public boolean equals(Object o) {
     return o.getClass() == OrdFieldSource.class && this.field.equals(((OrdFieldSource)o).field);
   }
 
   private static final int hcode = OrdFieldSource.class.hashCode();
+  @Override
   public int hashCode() {
     return hcode + field.hashCode();
   };

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/PowFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/PowFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/PowFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/PowFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -28,10 +28,12 @@ public class PowFloatFunction extends Du
     super(a,b);
   }
 
+  @Override
   protected String name() {
     return "pow";
   }
 
+  @Override
   protected float func(int doc, DocValues aVals, DocValues bVals) {
     return (float)Math.pow(aVals.floatVal(doc), bVals.floatVal(doc));
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ProductFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ProductFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ProductFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ProductFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -25,10 +25,12 @@ public class ProductFloatFunction extend
     super(sources);
   }
 
+  @Override
   protected String name() {
     return "product";
   }
 
+  @Override
   protected float func(int doc, DocValues[] valsArr) {
     float val = 1.0f;
     for (DocValues vals : valsArr) {

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/QueryValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/QueryValueSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/QueryValueSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/QueryValueSource.java Tue Feb 22 01:00:39 2011
@@ -42,6 +42,7 @@ public class QueryValueSource extends Va
   public Query getQuery() { return q; }
   public float getDefaultValue() { return defVal; }
 
+  @Override
   public String description() {
     return "query(" + q + ",def=" + defVal + ")";
   }
@@ -51,10 +52,12 @@ public class QueryValueSource extends Va
     return new QueryDocValues(readerContext, q, defVal, fcontext);
   }
 
+  @Override
   public int hashCode() {
     return q.hashCode() * 29;
   }
 
+  @Override
   public boolean equals(Object o) {
     if (QueryValueSource.class != o.getClass()) return false;
     QueryValueSource other = (QueryValueSource)o;
@@ -97,11 +100,11 @@ class QueryDocValues extends DocValues {
     if (w == null) {
       IndexSearcher weightSearcher;
       if(fcontext == null) {
-        weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext), readerContext);
+        weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext));
       } else {
         weightSearcher = (IndexSearcher)fcontext.get("searcher");
         if (weightSearcher == null) {
-          weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext), readerContext);
+          weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext));
         }
       }
       w = q.weight(weightSearcher);
@@ -109,6 +112,7 @@ class QueryDocValues extends DocValues {
     weight = w;
   }
 
+  @Override
   public float floatVal(int doc) {
     try {
       if (doc < lastDocRequested) {
@@ -135,18 +139,23 @@ class QueryDocValues extends DocValues {
     }
   }  
 
+  @Override
   public int intVal(int doc) {
     return (int)floatVal(doc);
   }
+  @Override
   public long longVal(int doc) {
     return (long)floatVal(doc);
   }
+  @Override
   public double doubleVal(int doc) {
     return (double)floatVal(doc);
   }
+  @Override
   public String strVal(int doc) {
     return Float.toString(floatVal(doc));
   }
+  @Override
   public String toString(int doc) {
     return "query(" + q + ",def=" + defVal + ")=" + floatVal(doc);
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -46,29 +46,37 @@ public class RangeMapFloatFunction exten
     this.defaultVal = def;
   }
 
+  @Override
   public String description() {
     return "map(" + source.description() + "," + min + "," + max + "," + target + ")";
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final DocValues vals =  source.getValues(context, readerContext);
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         float val = vals.floatVal(doc);
         return (val>=min && val<=max) ? target : (defaultVal == null ? val : defaultVal);
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
         return "map(" + vals.toString(doc) + ",min=" + min + ",max=" + max + ",target=" + target + ")";
       }
@@ -80,6 +88,7 @@ public class RangeMapFloatFunction exten
     source.createWeight(context, searcher);
   }
 
+  @Override
   public int hashCode() {
     int h = source.hashCode();
     h ^= (h << 10) | (h >>> 23);
@@ -93,6 +102,7 @@ public class RangeMapFloatFunction exten
     return h;
   }
 
+  @Override
   public boolean equals(Object o) {
     if (RangeMapFloatFunction.class != o.getClass()) return false;
     RangeMapFloatFunction other = (RangeMapFloatFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -57,24 +57,31 @@ public class ReciprocalFloatFunction ext
     this.b=b;
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final DocValues vals = source.getValues(context, readerContext);
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return a/(m*vals.floatVal(doc) + b);
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
         return Float.toString(a) + "/("
                 + m + "*float(" + vals.toString(doc) + ')'
@@ -88,18 +95,21 @@ public class ReciprocalFloatFunction ext
     source.createWeight(context, searcher);
   }
 
+  @Override
   public String description() {
     return Float.toString(a) + "/("
            + m + "*float(" + source.description() + ")"
            + "+" + b + ')';
   }
 
+  @Override
   public int hashCode() {
     int h = Float.floatToIntBits(a) + Float.floatToIntBits(m);
     h ^= (h << 13) | (h >>> 20);
     return h + (Float.floatToIntBits(b)) + source.hashCode();
   }
 
+  @Override
   public boolean equals(Object o) {
     if (ReciprocalFloatFunction.class != o.getClass()) return false;
     ReciprocalFloatFunction other = (ReciprocalFloatFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java Tue Feb 22 01:00:39 2011
@@ -53,10 +53,12 @@ public class ReverseOrdFieldSource exten
     this.field = field;
   }
 
+  @Override
   public String description() {
     return "rord("+field+')';
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader;
     final int off = readerContext.docBase;
@@ -65,41 +67,50 @@ public class ReverseOrdFieldSource exten
     final int end = sindex.numOrd();
 
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return (float)(end - sindex.getOrd(doc+off));
       }
 
+      @Override
       public int intVal(int doc) {
         return (end - sindex.getOrd(doc+off));
       }
 
+      @Override
       public long longVal(int doc) {
         return (long)(end - sindex.getOrd(doc+off));
       }
 
+      @Override
       public int ordVal(int doc) {
         return (end - sindex.getOrd(doc+off));
       }
 
+      @Override
       public int numOrd() {
         return end;
       }
 
+      @Override
       public double doubleVal(int doc) {
         return (double)(end - sindex.getOrd(doc+off));
       }
 
+      @Override
       public String strVal(int doc) {
         // the string value of the ordinal, not the string itself
         return Integer.toString((end - sindex.getOrd(doc+off)));
       }
 
+      @Override
       public String toString(int doc) {
         return description() + '=' + strVal(doc);
       }
     };
   }
 
+  @Override
   public boolean equals(Object o) {
     if (o.getClass() !=  ReverseOrdFieldSource.class) return false;
     ReverseOrdFieldSource other = (ReverseOrdFieldSource)o;
@@ -107,6 +118,7 @@ public class ReverseOrdFieldSource exten
   }
 
   private static final int hcode = ReverseOrdFieldSource.class.hashCode();
+  @Override
   public int hashCode() {
     return hcode + field.hashCode();
   };

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -46,6 +46,7 @@ public class ScaleFloatFunction extends 
     this.max = max;
   }
 
+  @Override
   public String description() {
     return "scale(" + source.description() + "," + min + "," + max + ")";
   }
@@ -93,6 +94,7 @@ public class ScaleFloatFunction extends 
     return scaleInfo;
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
 
     ScaleInfo scaleInfo = (ScaleInfo)context.get(source);
@@ -107,21 +109,27 @@ public class ScaleFloatFunction extends 
     final DocValues vals =  source.getValues(context, readerContext);
 
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
 	return (vals.floatVal(doc) - minSource) * scale + min;
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
 	return "scale(" + vals.toString(doc) + ",toMin=" + min + ",toMax=" + max
                 + ",fromMin=" + minSource
@@ -136,6 +144,7 @@ public class ScaleFloatFunction extends 
     source.createWeight(context, searcher);
   }
 
+  @Override
   public int hashCode() {
     int h = Float.floatToIntBits(min);
     h = h*29;
@@ -145,6 +154,7 @@ public class ScaleFloatFunction extends 
     return h;
   }
 
+  @Override
   public boolean equals(Object o) {
     if (ScaleFloatFunction.class != o.getClass()) return false;
     ScaleFloatFunction other = (ScaleFloatFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java Tue Feb 22 01:00:39 2011
@@ -35,10 +35,12 @@ public class ShortFieldSource extends Nu
   }
 
 
+  @Override
   public String description() {
     return "short(" + field + ')';
   }
 
+  @Override
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final ShortValues vals = cache.getShorts(readerContext.reader, field, creator);
     final short[] arr = vals.values;
@@ -54,26 +56,32 @@ public class ShortFieldSource extends Nu
         return arr[doc];
       }
 
+      @Override
       public float floatVal(int doc) {
         return (float) arr[doc];
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) arr[doc];
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) arr[doc];
       }
 
+      @Override
       public double doubleVal(int doc) {
         return (double) arr[doc];
       }
 
+      @Override
       public String strVal(int doc) {
         return Short.toString(arr[doc]);
       }
 
+      @Override
       public String toString(int doc) {
         return description() + '=' + shortVal(doc);
       }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -35,21 +35,27 @@ import java.util.Map;
   public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
     final DocValues vals =  source.getValues(context, readerContext);
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
 	return func(doc, vals);
       }
+      @Override
       public int intVal(int doc) {
         return (int)floatVal(doc);
       }
+      @Override
       public long longVal(int doc) {
         return (long)floatVal(doc);
       }
+      @Override
       public double doubleVal(int doc) {
         return (double)floatVal(doc);
       }
+      @Override
       public String strVal(int doc) {
         return Float.toString(floatVal(doc));
       }
+      @Override
       public String toString(int doc) {
 	return name() + '(' + vals.toString(doc) + ')';
       }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SingleFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SingleFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SingleFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SingleFunction.java Tue Feb 22 01:00:39 2011
@@ -33,14 +33,17 @@ import java.util.Map;
 
   protected abstract String name();
 
+  @Override
   public String description() {
     return name() + '(' + source.description() + ')';
   }
 
+  @Override
   public int hashCode() {
     return source.hashCode() + name().hashCode();
   }
 
+  @Override
   public boolean equals(Object o) {
     if (this.getClass() != o.getClass()) return false;
     SingleFunction other = (SingleFunction)o;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java Tue Feb 22 01:00:39 2011
@@ -89,6 +89,7 @@ public abstract class StringIndexDocValu
       };
     }
 
+  @Override
   public String toString(int doc) {
     return vs.description() + '=' + strVal(doc);
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SumFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SumFloatFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SumFloatFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/SumFloatFunction.java Tue Feb 22 01:00:39 2011
@@ -30,6 +30,7 @@ public class SumFloatFunction extends Mu
     return "sum";
   }
 
+  @Override
   protected float func(int doc, DocValues[] valsArr) {
     float val = 0.0f;
     for (DocValues vals : valsArr) {

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/TFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/TFValueSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/TFValueSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/TFValueSource.java Tue Feb 22 01:00:39 2011
@@ -1,5 +1,22 @@
 package org.apache.solr.search.function;
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import org.apache.lucene.index.*;
 import org.apache.lucene.index.IndexReader.AtomicReaderContext;
 import org.apache.lucene.search.DocIdSetIterator;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSource.java Tue Feb 22 01:00:39 2011
@@ -49,8 +49,10 @@ public abstract class ValueSource implem
    */
   public abstract DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException;
 
+  @Override
   public abstract boolean equals(Object o);
 
+  @Override
   public abstract int hashCode();
 
   /**
@@ -58,6 +60,7 @@ public abstract class ValueSource implem
    */
   public abstract String description();
 
+  @Override
   public String toString() {
     return description();
   }
@@ -87,9 +90,8 @@ public abstract class ValueSource implem
 
   /**
    * EXPERIMENTAL: This method is subject to change.
-   * <br>WARNING: Sorted function queries are not currently weighted.
    * <p>
-   * Get the SortField for this ValueSource.  Uses the {@link #getValues(java.util.Map, AtomicReaderContext)}
+   * Get the SortField for this ValueSource.  Uses the {@link #getValues(java.util.Map, IndexReader.AtomicReaderContext)}
    * to populate the SortField.
    *
    * @param reverse true if this is a reverse sort.
@@ -127,6 +129,7 @@ public abstract class ValueSource implem
       this.context = context;
     }
 
+    @Override
     public FieldComparator newComparator(String fieldname, int numHits,
                                          int sortPos, boolean reversed) throws IOException {
       return new ValueSourceComparator(context, numHits);
@@ -149,6 +152,7 @@ public abstract class ValueSource implem
       values = new double[numHits];
     }
 
+    @Override
     public int compare(int slot1, int slot2) {
       final double v1 = values[slot1];
       final double v2 = values[slot2];
@@ -162,6 +166,7 @@ public abstract class ValueSource implem
 
     }
 
+    @Override
     public int compareBottom(int doc) {
       final double v2 = docVals.doubleVal(doc);
       if (bottom > v2) {
@@ -173,19 +178,23 @@ public abstract class ValueSource implem
       }
     }
 
+    @Override
     public void copy(int slot, int doc) {
       values[slot] = docVals.doubleVal(doc);
     }
 
+    @Override
     public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
       docVals = getValues(fcontext, context);
       return this;
     }
 
+    @Override
     public void setBottom(final int bottom) {
       this.bottom = values[bottom];
     }
 
+    @Override
     public Comparable value(int slot) {
       return values[slot];
     }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java Tue Feb 22 01:00:39 2011
@@ -49,9 +49,11 @@ public class ValueSourceRangeFilter exte
     this.includeUpper = upperVal != null && includeUpper;
   }
 
+  @Override
   public DocIdSet getDocIdSet(final Map context, final AtomicReaderContext readerContext) throws IOException {
      return new DocIdSet() {
-       public DocIdSetIterator iterator() throws IOException {
+       @Override
+      public DocIdSetIterator iterator() throws IOException {
          return valueSource.getValues(context, readerContext).getRangeScorer(readerContext.reader, lowerVal, upperVal, includeLower, includeUpper);
        }
      };
@@ -62,6 +64,7 @@ public class ValueSourceRangeFilter exte
     valueSource.createWeight(context, searcher);
   }
 
+  @Override
   public String toString() {
     StringBuilder sb = new StringBuilder();
     sb.append("frange(");
@@ -75,6 +78,7 @@ public class ValueSourceRangeFilter exte
     return sb.toString();
   }
 
+  @Override
   public boolean equals(Object o) {
     if (this == o) return true;
     if (!(o instanceof ValueSourceRangeFilter)) return false;
@@ -89,6 +93,7 @@ public class ValueSourceRangeFilter exte
     return true;
   }
 
+  @Override
   public int hashCode() {
     int h = valueSource.hashCode();
     h += lowerVal != null ? lowerVal.hashCode() : 0x572353db;

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/VectorValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/VectorValueSource.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/VectorValueSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/VectorValueSource.java Tue Feb 22 01:00:39 2011
@@ -44,6 +44,7 @@ public class VectorValueSource extends M
     return sources;
   }
 
+  @Override
   public int dimension() {
     return sources.size();
   }
@@ -97,6 +98,7 @@ public class VectorValueSource extends M
           vals[0] = x.strVal(doc);
           vals[1] = y.strVal(doc);
         }
+        @Override
         public String toString(int doc) {
           return name() + "(" + x.toString(doc) + "," + y.toString(doc) + ")";
         }
@@ -178,12 +180,14 @@ public class VectorValueSource extends M
     };
   }
 
+  @Override
   public void createWeight(Map context, IndexSearcher searcher) throws IOException {
     for (ValueSource source : sources)
       source.createWeight(context, searcher);
   }
 
 
+  @Override
   public String description() {
     StringBuilder sb = new StringBuilder();
     sb.append(name()).append('(');

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java Tue Feb 22 01:00:39 2011
@@ -59,22 +59,27 @@ public class GeohashHaversineFunction ex
     final DocValues gh2DV = geoHash2.getValues(context, readerContext);
 
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return (float) doubleVal(doc);
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) doubleVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) doubleVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return distance(doc, gh1DV, gh2DV);
       }
 
+      @Override
       public String strVal(int doc) {
         return Double.toString(doubleVal(doc));
       }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java Tue Feb 22 01:00:39 2011
@@ -39,6 +39,7 @@ import java.util.Map;
 public class HaversineConstFunction extends ValueSource {
 
   public static ValueSourceParser parser = new ValueSourceParser() {
+    @Override
     public ValueSource parse(FunctionQParser fp) throws ParseException
     {
       // TODO: dispatch through SpatialQueriable in the future?
@@ -198,18 +199,22 @@ public class HaversineConstFunction exte
     final double latCenterRad_cos = this.latCenterRad_cos;
 
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return (float) doubleVal(doc);
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) doubleVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) doubleVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         double latRad = latVals.doubleVal(doc) * DistanceUtils.DEGREES_TO_RADIANS;
         double lonRad = lonVals.doubleVal(doc) * DistanceUtils.DEGREES_TO_RADIANS;
@@ -222,6 +227,7 @@ public class HaversineConstFunction exte
         return (EARTH_MEAN_DIAMETER * Math.atan2(Math.sqrt(h), Math.sqrt(1 - h)));
       }
 
+      @Override
       public String strVal(int doc) {
         return Double.toString(doubleVal(doc));
       }
@@ -260,6 +266,7 @@ public class HaversineConstFunction exte
     return result;
   }
 
+  @Override
   public String description() {
     return name() + '(' + p2 + ',' + latCenter + ',' + lonCenter + ')';
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java Tue Feb 22 01:00:39 2011
@@ -100,22 +100,27 @@ public class HaversineFunction extends V
 
     final DocValues vals2 = p2.getValues(context, readerContext);
     return new DocValues() {
+      @Override
       public float floatVal(int doc) {
         return (float) doubleVal(doc);
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) doubleVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) doubleVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return distance(doc, vals1, vals2);
       }
 
+      @Override
       public String strVal(int doc) {
         return Double.toString(doubleVal(doc));
       }
@@ -159,6 +164,7 @@ public class HaversineFunction extends V
     return result;
   }
 
+  @Override
   public String description() {
     StringBuilder sb = new StringBuilder();
     sb.append(name()).append('(');

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/SquaredEuclideanFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/SquaredEuclideanFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/SquaredEuclideanFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/SquaredEuclideanFunction.java Tue Feb 22 01:00:39 2011
@@ -33,6 +33,7 @@ public class SquaredEuclideanFunction ex
   }
 
 
+  @Override
   protected String name() {
 
     return name;
@@ -41,6 +42,7 @@ public class SquaredEuclideanFunction ex
   /**
    * @param doc The doc to score
    */
+  @Override
   protected double distance(int doc, DocValues dv1, DocValues dv2) {
 
     double[] vals1 = new double[source1.dimension()];

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java Tue Feb 22 01:00:39 2011
@@ -1,5 +1,22 @@
 package org.apache.solr.search.function.distance;
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 import org.apache.lucene.index.IndexReader.AtomicReaderContext;
 import org.apache.lucene.search.spell.StringDistance;
 import org.apache.solr.search.function.DocValues;
@@ -36,18 +53,22 @@ public class StringDistanceFunction exte
     final DocValues str2DV = str2.getValues(context, readerContext);
     return new DocValues() {
 
+      @Override
       public float floatVal(int doc) {
         return dist.getDistance(str1DV.strVal(doc), str2DV.strVal(doc));
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) doubleVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) doubleVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return (double) floatVal(doc);
       }
@@ -64,6 +85,7 @@ public class StringDistanceFunction exte
     };
   }
 
+  @Override
   public String description() {
     StringBuilder sb = new StringBuilder();
     sb.append("strdist").append('(');

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java Tue Feb 22 01:00:39 2011
@@ -96,22 +96,27 @@ public class VectorDistanceFunction exte
         return (short) doubleVal(doc);
       }
 
+      @Override
       public float floatVal(int doc) {
         return (float) doubleVal(doc);
       }
 
+      @Override
       public int intVal(int doc) {
         return (int) doubleVal(doc);
       }
 
+      @Override
       public long longVal(int doc) {
         return (long) doubleVal(doc);
       }
 
+      @Override
       public double doubleVal(int doc) {
         return distance(doc, vals1, vals2);
       }
 
+      @Override
       public String strVal(int doc) {
         return Double.toString(doubleVal(doc));
       }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/AbstractLuceneSpellChecker.java Tue Feb 22 01:00:39 2011
@@ -91,6 +91,7 @@ public abstract class AbstractLuceneSpel
 
   protected StringDistance sd;
 
+  @Override
   public String init(NamedList config, SolrCore core) {
     super.init(config, core);
     indexDir = (String) config.get(INDEX_DIR);
@@ -213,6 +214,7 @@ public abstract class AbstractLuceneSpel
     return reader;
   }
 
+  @Override
   public void reload(SolrCore core, SolrIndexSearcher searcher) throws IOException {
     spellChecker.setSpellIndex(index);
 

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/FileBasedSpellChecker.java Tue Feb 22 01:00:39 2011
@@ -50,12 +50,14 @@ public class FileBasedSpellChecker exten
   private String characterEncoding;
   public static final String WORD_FIELD_NAME = "word";
 
+  @Override
   public String init(NamedList config, SolrCore core) {
     super.init(config, core);
     characterEncoding = (String) config.get(SOURCE_FILE_CHAR_ENCODING);
     return name;
   }
 
+  @Override
   public void build(SolrCore core, SolrIndexSearcher searcher) {
     try {
       loadExternalFileDictionary(core);

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/IndexBasedSpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/IndexBasedSpellChecker.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/IndexBasedSpellChecker.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/IndexBasedSpellChecker.java Tue Feb 22 01:00:39 2011
@@ -49,6 +49,7 @@ public class IndexBasedSpellChecker exte
   protected float threshold;
   protected IndexReader reader;
 
+  @Override
   public String init(NamedList config, SolrCore core) {
     super.init(config, core);
     threshold = config.get(THRESHOLD_TOKEN_FREQUENCY) == null ? 0.0f
@@ -68,6 +69,7 @@ public class IndexBasedSpellChecker exte
     }
   }
 
+  @Override
   public void build(SolrCore core, SolrIndexSearcher searcher) {
     IndexReader reader = null;
     try {

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellCheckCollator.java Tue Feb 22 01:00:39 2011
@@ -29,7 +29,6 @@ import org.apache.solr.handler.component
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
-import org.mortbay.log.Log;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -91,7 +90,7 @@ public class SpellCheckCollator {
           queryComponent.process(checkResponse);
           hits = (Integer) checkResponse.rsp.getToLog().get("hits");
         } catch (Exception e) {
-          Log.warn("Exception trying to re-query to check if a spell check possibility would return any hits.", e);
+          LOG.warn("Exception trying to re-query to check if a spell check possibility would return any hits.", e);
         } finally {
           checkResponse.req.close();  
         }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellingQueryConverter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellingQueryConverter.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellingQueryConverter.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/SpellingQueryConverter.java Tue Feb 22 01:00:39 2011
@@ -91,6 +91,7 @@ public class SpellingQueryConverter exte
    * @param original the original query string
    * @return a Collection of Lucene Tokens
    */
+  @Override
   public Collection<Token> convert(String original) {
     if (original == null) { // this can happen with q.alt = and no query
       return Collections.emptyList();

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java Tue Feb 22 01:00:39 2011
@@ -25,6 +25,7 @@ public abstract class Lookup {
       this.value = value;
     }
     
+    @Override
     public String toString() {
       return key + "/" + value;
     }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/CommitUpdateCommand.java Tue Feb 22 01:00:39 2011
@@ -39,6 +39,7 @@ public class CommitUpdateCommand extends
     super("commit", req);
     this.optimize=optimize;
   }
+  @Override
   public String toString() {
     return "commit(optimize="+optimize
             +",waitFlush="+waitFlush

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DeleteUpdateCommand.java Tue Feb 22 01:00:39 2011
@@ -30,6 +30,7 @@ public class DeleteUpdateCommand extends
     super("delete", req);
   }
 
+  @Override
   public String toString() {
     StringBuilder sb = new StringBuilder(commandName);
     sb.append(':');

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/DirectUpdateHandler2.java Tue Feb 22 01:00:39 2011
@@ -91,7 +91,9 @@ public class DirectUpdateHandler2 extend
   public DirectUpdateHandler2(SolrCore core) throws IOException {
     super(core);
 
-    ReadWriteLock rwl = new ReentrantReadWriteLock();
+    // Pass fairness=true so commit request is not starved
+    // when add/updates are running hot (SOLR-2342):
+    ReadWriteLock rwl = new ReentrantReadWriteLock(true);
     iwAccess = rwl.readLock();
     iwCommit = rwl.writeLock();
 
@@ -134,6 +136,7 @@ public class DirectUpdateHandler2 extend
     }
   }
 
+  @Override
   public int addDoc(AddUpdateCommand cmd) throws IOException {
     addCommands.incrementAndGet();
     addCommandsCumulative.incrementAndGet();
@@ -202,6 +205,7 @@ public class DirectUpdateHandler2 extend
 
 
   // could return the number of docs deleted, but is that always possible to know???
+  @Override
   public void delete(DeleteUpdateCommand cmd) throws IOException {
     deleteByIdCommands.incrementAndGet();
     deleteByIdCommandsCumulative.incrementAndGet();
@@ -221,6 +225,7 @@ public class DirectUpdateHandler2 extend
 
   // why not return number of docs deleted?
   // Depending on implementation, we may not be able to immediately determine the num...
+  @Override
   public void deleteByQuery(DeleteUpdateCommand cmd) throws IOException {
     deleteByQueryCommands.incrementAndGet();
     deleteByQueryCommandsCumulative.incrementAndGet();
@@ -263,6 +268,7 @@ public class DirectUpdateHandler2 extend
     }
   }
 
+  @Override
   public int mergeIndexes(MergeIndexesCommand cmd) throws IOException {
     mergeIndexesCommands.incrementAndGet();
     int rc = -1;
@@ -300,6 +306,7 @@ public class DirectUpdateHandler2 extend
     }
   }
 
+  @Override
   public void commit(CommitUpdateCommand cmd) throws IOException {
 
     if (cmd.optimize) {
@@ -369,6 +376,7 @@ public class DirectUpdateHandler2 extend
   /**
    * @since Solr 1.4
    */
+  @Override
   public void rollback(RollbackUpdateCommand cmd) throws IOException {
 
     rollbackCommands.incrementAndGet();
@@ -402,6 +410,7 @@ public class DirectUpdateHandler2 extend
   }
 
 
+  @Override
   public void close() throws IOException {
     log.info("closing " + this);
     iwCommit.lock();
@@ -547,6 +556,7 @@ public class DirectUpdateHandler2 extend
     // to facilitate testing: blocks if called during commit
     public synchronized int getCommitCount() { return autoCommitCount; }
 
+    @Override
     public String toString() {
       if(timeUpperBound > 0 || docsUpperBound > 0) {
         return
@@ -619,6 +629,7 @@ public class DirectUpdateHandler2 extend
     return lst;
   }
 
+  @Override
   public String toString() {
     return "DirectUpdateHandler2" + getStatistics();
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/SolrIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/SolrIndexWriter.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/SolrIndexWriter.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/SolrIndexWriter.java Tue Feb 22 01:00:39 2011
@@ -132,6 +132,7 @@ public class SolrIndexWriter extends Ind
    * ****
    */
   private volatile boolean isClosed = false;
+  @Override
   public void close() throws IOException {
     log.debug("Closing Writer " + name);
     try {
@@ -178,6 +179,7 @@ public class SolrIndexWriter extends Ind
     // We might ideally want to override print(String) as well, but
     // looking through the code that writes to infoStream, it appears
     // that all the classes except CheckIndex just use println.
+    @Override
     public void println(String x) {
       print(dateFormat.format(new Date()) + " ");
       super.println(x);

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/UpdateCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/UpdateCommand.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/UpdateCommand.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/UpdateCommand.java Tue Feb 22 01:00:39 2011
@@ -33,6 +33,7 @@ import org.apache.solr.request.SolrQuery
       this.commandName = commandName;
     }
 
+    @Override
     public String toString() {
       return commandName;
     }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/Lookup3Signature.java Tue Feb 22 01:00:39 2011
@@ -25,10 +25,12 @@ public class Lookup3Signature extends Si
   public Lookup3Signature() {
   }
 
+  @Override
   public void add(String content) {
     hash = Hash.lookup3ycs64(content,0,content.length(),hash);
   }
 
+  @Override
   public byte[] getSignature() {
     return new byte[]{(byte)(hash>>56),(byte)(hash>>48),(byte)(hash>>40),(byte)(hash>>32),(byte)(hash>>24),(byte)(hash>>16),(byte)(hash>>8),(byte)(hash>>0)};
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/MD5Signature.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/MD5Signature.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/MD5Signature.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/MD5Signature.java Tue Feb 22 01:00:39 2011
@@ -26,6 +26,7 @@ import org.slf4j.LoggerFactory;
 public class MD5Signature extends Signature {
   protected final static Logger log = LoggerFactory.getLogger(MD5Signature.class);
   private static ThreadLocal<MessageDigest> DIGESTER_FACTORY = new ThreadLocal<MessageDigest>() {
+    @Override
     protected MessageDigest initialValue() {
       try {
         return MessageDigest.getInstance("MD5");
@@ -41,6 +42,7 @@ public class MD5Signature extends Signat
     digester.reset();
   }
 
+  @Override
   public void add(String content) {
     try {
       digester.update(content.getBytes("UTF-8"));
@@ -51,6 +53,7 @@ public class MD5Signature extends Signat
     }
   }
 
+  @Override
   public byte[] getSignature() {
     return digester.digest();
   }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/TextProfileSignature.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/TextProfileSignature.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/TextProfileSignature.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/update/processor/TextProfileSignature.java Tue Feb 22 01:00:39 2011
@@ -51,12 +51,14 @@ public class TextProfileSignature extend
   private float quantRate;
   private float minTokenLen;
 
+  @Override
   public void init(SolrParams params) {
     quantRate = params.getFloat("quantRate", 0.01f);
     minTokenLen = params.getInt("minTokenLen", 2);
   }
 
   
+  @Override
   public byte[] getSignature() {
     return super.getSignature();
   }
@@ -144,6 +146,7 @@ public class TextProfileSignature extend
       this.val = val;
     }
 
+    @Override
     public String toString() {
       return val + " " + cnt;
     }

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/BoundedTreeSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/BoundedTreeSet.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/BoundedTreeSet.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/BoundedTreeSet.java Tue Feb 22 01:00:39 2011
@@ -55,11 +55,13 @@ public class BoundedTreeSet<E> extends T
       remove(last());
     }
   }
+  @Override
   public boolean add(E item) {
     boolean out = super.add(item);
     adjust();
     return out;
   }
+  @Override
   public boolean addAll(Collection<? extends E> c) {
     boolean out = super.addAll(c);
     adjust();

Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/SentinelIntSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/SentinelIntSet.java?rev=1073192&r1=1073191&r2=1073192&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/SentinelIntSet.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/util/SentinelIntSet.java Tue Feb 22 01:00:39 2011
@@ -1,134 +1,134 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.solr.util;
-
-import java.util.Arrays;
-
-/** A native int set where one value is reserved to mean "EMPTY" */
-public class SentinelIntSet {
-  public int[] keys;
-  public int count;
-  public final int emptyVal;
-  public int rehashCount;   // the count at which a rehash should be done
-
-  public SentinelIntSet(int size, int emptyVal) {
-    this.emptyVal = emptyVal;
-    int tsize = Math.max(org.apache.lucene.util.BitUtil.nextHighestPowerOfTwo(size), 1);
-    rehashCount = tsize - (tsize>>2);
-    if (size >= rehashCount) {  // should be able to hold "size" w/o rehashing
-      tsize <<= 1;
-      rehashCount = tsize - (tsize>>2);
-    }
-    keys = new int[tsize];
-    if (emptyVal != 0)
-      clear();
-  }
-
-  public void clear() {
-    Arrays.fill(keys, emptyVal);
-    count = 0;
-  }
-
-  public int hash(int key) {
-    return key;
-  }
-
-  public int size() { return count; }
-
-  /** returns the slot for this key */
-  public int getSlot(int key) {
-    assert key != emptyVal;
-    int h = hash(key);
-    int s = h & (keys.length-1);
-    if (keys[s] == key || keys[s]== emptyVal) return s;
-
-    int increment = (h>>7)|1;
-    do {
-      s = (s + increment) & (keys.length-1);
-    } while (keys[s] != key && keys[s] != emptyVal);
-    return s;
-  }
-
-  /** returns the slot for this key, or -slot-1 if not found */
-  public int find(int key) {
-    assert key != emptyVal;
-    int h = hash(key);
-    int s = h & (keys.length-1);
-    if (keys[s] == key) return s;
-    if (keys[s] == emptyVal) return -s-1;
-
-    int increment = (h>>7)|1;
-    for(;;) {
-      s = (s + increment) & (keys.length-1);
-      if (keys[s] == key) return s;
-      if (keys[s] == emptyVal) return -s-1;
-    }
-  }
-
-
-  public boolean exists(int key) {
-    return find(key) >= 0;
-  }
-
-
-  public int put(int key) {
-    int s = find(key);
-    if (s < 0) {
-      if (count >= rehashCount) {
-        rehash();
-        s = getSlot(key);
-      } else {
-        s = -s-1;
-      }
-      count++;
-      keys[s] = key;
-      putKey(key, s);
-    } else {
-      overwriteKey(key, s);
-    }
-    return s;
-  }
-
-
-  protected void putKey(int key, int slot) {}
-  protected void overwriteKey(int key, int slot) {}
-
-  protected void startRehash(int newSize) {}
-  protected void moveKey(int key, int oldSlot, int newSlot) {}
-  protected void endRehash() {}
-
-  public void rehash() {
-    int newSize = keys.length << 1;
-    startRehash(newSize);
-    int[] oldKeys = keys;
-    keys = new int[newSize];
-    if (emptyVal != 0) Arrays.fill(keys, emptyVal);
-
-    for (int i=0; i<oldKeys.length; i++) {
-      int key = oldKeys[i];
-      if (key == emptyVal) continue;
-      int newSlot = getSlot(key);
-      keys[newSlot] = key;
-      moveKey(key, i, newSlot);
-    }
-    endRehash();
-    rehashCount = newSize - (newSize>>2);
-
-  }
-
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.util;
+
+import java.util.Arrays;
+
+/** A native int set where one value is reserved to mean "EMPTY" */
+public class SentinelIntSet {
+  public int[] keys;
+  public int count;
+  public final int emptyVal;
+  public int rehashCount;   // the count at which a rehash should be done
+
+  public SentinelIntSet(int size, int emptyVal) {
+    this.emptyVal = emptyVal;
+    int tsize = Math.max(org.apache.lucene.util.BitUtil.nextHighestPowerOfTwo(size), 1);
+    rehashCount = tsize - (tsize>>2);
+    if (size >= rehashCount) {  // should be able to hold "size" w/o rehashing
+      tsize <<= 1;
+      rehashCount = tsize - (tsize>>2);
+    }
+    keys = new int[tsize];
+    if (emptyVal != 0)
+      clear();
+  }
+
+  public void clear() {
+    Arrays.fill(keys, emptyVal);
+    count = 0;
+  }
+
+  public int hash(int key) {
+    return key;
+  }
+
+  public int size() { return count; }
+
+  /** returns the slot for this key */
+  public int getSlot(int key) {
+    assert key != emptyVal;
+    int h = hash(key);
+    int s = h & (keys.length-1);
+    if (keys[s] == key || keys[s]== emptyVal) return s;
+
+    int increment = (h>>7)|1;
+    do {
+      s = (s + increment) & (keys.length-1);
+    } while (keys[s] != key && keys[s] != emptyVal);
+    return s;
+  }
+
+  /** returns the slot for this key, or -slot-1 if not found */
+  public int find(int key) {
+    assert key != emptyVal;
+    int h = hash(key);
+    int s = h & (keys.length-1);
+    if (keys[s] == key) return s;
+    if (keys[s] == emptyVal) return -s-1;
+
+    int increment = (h>>7)|1;
+    for(;;) {
+      s = (s + increment) & (keys.length-1);
+      if (keys[s] == key) return s;
+      if (keys[s] == emptyVal) return -s-1;
+    }
+  }
+
+
+  public boolean exists(int key) {
+    return find(key) >= 0;
+  }
+
+
+  public int put(int key) {
+    int s = find(key);
+    if (s < 0) {
+      if (count >= rehashCount) {
+        rehash();
+        s = getSlot(key);
+      } else {
+        s = -s-1;
+      }
+      count++;
+      keys[s] = key;
+      putKey(key, s);
+    } else {
+      overwriteKey(key, s);
+    }
+    return s;
+  }
+
+
+  protected void putKey(int key, int slot) {}
+  protected void overwriteKey(int key, int slot) {}
+
+  protected void startRehash(int newSize) {}
+  protected void moveKey(int key, int oldSlot, int newSlot) {}
+  protected void endRehash() {}
+
+  public void rehash() {
+    int newSize = keys.length << 1;
+    startRehash(newSize);
+    int[] oldKeys = keys;
+    keys = new int[newSize];
+    if (emptyVal != 0) Arrays.fill(keys, emptyVal);
+
+    for (int i=0; i<oldKeys.length; i++) {
+      int key = oldKeys[i];
+      if (key == emptyVal) continue;
+      int newSlot = getSlot(key);
+      keys[newSlot] = key;
+      moveKey(key, i, newSlot);
+    }
+    endRehash();
+    rehashCount = newSize - (newSize>>2);
+
+  }
+
+}