You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2013/01/18 19:31:23 UTC

svn commit: r1435287 [30/41] - in /lucene/dev/branches/LUCENE-2878: ./ dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/libraries/ dev-tools/idea/lucene/analysis/icu/ dev-tools/maven/ dev-tools/maven/lucene/benchmark/ dev-tools/maven/solr/ dev-tools/...

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -45,9 +45,11 @@ import java.util.*;
 
 public class CSVResponseWriter implements QueryResponseWriter {
 
+  @Override
   public void init(NamedList n) {
   }
 
+  @Override
   public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     CSVWriter w = new CSVWriter(writer, req, rsp);
     try {
@@ -57,6 +59,7 @@ public class CSVResponseWriter implement
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     // using the text/plain allows this to be viewed in the browser easily
     return CONTENT_TYPE_TEXT_UTF8;
@@ -352,12 +355,14 @@ class CSVWriter extends TextResponseWrit
   public void writeNamedList(String name, NamedList val) throws IOException {
   }
 
+  @Override
   public void writeStartDocumentList(String name, 
       long start, int size, long numFound, Float maxScore) throws IOException
   {
     // nothing
   }
 
+  @Override
   public void writeEndDocumentList() throws IOException
   {
     // nothing

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/JSONResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -45,6 +45,7 @@ public class JSONResponseWriter implemen
 
   private String contentType = CONTENT_TYPE_JSON_UTF8;
 
+  @Override
   public void init(NamedList namedList) {
     String contentType = (String) namedList.get("content-type");
     if (contentType != null) {
@@ -52,6 +53,7 @@ public class JSONResponseWriter implemen
     }
   }
 
+  @Override
   public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     JSONWriter w = new JSONWriter(writer, req, rsp);
     try {
@@ -61,6 +63,7 @@ public class JSONResponseWriter implemen
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     return contentType;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -26,11 +26,18 @@ import org.apache.solr.request.SolrQuery
 public class PHPResponseWriter implements QueryResponseWriter {
   static String CONTENT_TYPE_PHP_UTF8="text/x-php;charset=UTF-8";
 
-  public void init(NamedList n) {
-    /* NOOP */
+  private String contentType = CONTENT_TYPE_PHP_UTF8;
+
+  @Override
+  public void init(NamedList namedList) {
+    String contentType = (String) namedList.get("content-type");
+    if (contentType != null) {
+      this.contentType = contentType;
+    }
   }
-  
- public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
+
+  @Override
+  public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     PHPWriter w = new PHPWriter(writer, req, rsp);
     try {
       w.writeResponse();
@@ -39,8 +46,9 @@ public class PHPResponseWriter implement
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
-    return CONTENT_TYPE_TEXT_UTF8;
+    return contentType;
   }
 }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PHPSerializedResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -41,10 +41,18 @@ import org.apache.solr.search.ReturnFiel
 public class PHPSerializedResponseWriter implements QueryResponseWriter {
   static String CONTENT_TYPE_PHP_UTF8="text/x-php-serialized;charset=UTF-8";
 
-  public void init(NamedList n) {
+  private String contentType = CONTENT_TYPE_PHP_UTF8;
+
+  @Override
+  public void init(NamedList namedList) {
+    String contentType = (String) namedList.get("content-type");
+    if (contentType != null) {
+      this.contentType = contentType;
+    }
   }
   
- public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
+  @Override
+  public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     PHPSerializedWriter w = new PHPSerializedWriter(writer, req, rsp);
     try {
       w.writeResponse();
@@ -53,8 +61,9 @@ public class PHPSerializedResponseWriter
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
-    return CONTENT_TYPE_TEXT_UTF8;
+    return contentType;
   }
 }
 
@@ -82,6 +91,7 @@ class PHPSerializedWriter extends JSONWr
   
   
 
+  @Override
   public void writeStartDocumentList(String name, 
       long start, int size, long numFound, Float maxScore) throws IOException
   {
@@ -99,6 +109,7 @@ class PHPSerializedWriter extends JSONWr
     writeArrayOpener(size);
   }
 
+  @Override
   public void writeEndDocumentList() throws IOException
   {
     writeArrayCloser(); // doc list

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PythonResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PythonResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PythonResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/PythonResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -26,10 +26,12 @@ import org.apache.solr.request.SolrQuery
 public class PythonResponseWriter implements QueryResponseWriter {
   static String CONTENT_TYPE_PYTHON_ASCII="text/x-python;charset=US-ASCII";
 
+  @Override
   public void init(NamedList n) {
     /* NOOP */
   }
   
+  @Override
   public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     PythonWriter w = new PythonWriter(writer, req, rsp);
     try {
@@ -39,13 +41,16 @@ public class PythonResponseWriter implem
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     return CONTENT_TYPE_TEXT_ASCII;
   }
 }
 
 class PythonWriter extends NaNFloatWriter {
+  @Override
   protected String getNaN() { return "float('NaN')"; }
+  @Override
   protected String getInf() { return "float('Inf')"; }
 
   public PythonWriter(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/QueryResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -80,6 +80,7 @@ public interface QueryResponseWriter ext
    * may be specified when declaring a response writer in
    * solrconfig.xml
    */
+  @Override
   public void init(NamedList args);
 }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RawResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RawResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RawResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RawResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -54,6 +54,7 @@ public class RawResponseWriter implement
   public static final String CONTENT = "content";
   private String _baseWriter = null;
   
+  @Override
   public void init(NamedList n) {
     if( n != null ) {
       Object base = n.get( "base" );
@@ -69,6 +70,7 @@ public class RawResponseWriter implement
     return request.getCore().getQueryResponseWriter( _baseWriter );
   }
   
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     Object obj = response.getValues().get( CONTENT );
     if( obj != null && (obj instanceof ContentStream ) ) {
@@ -77,6 +79,7 @@ public class RawResponseWriter implement
     return getBaseWriter( request ).getContentType( request, response );
   }
 
+  @Override
   public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException 
   {
     Object obj = response.getValues().get( CONTENT );
@@ -95,6 +98,7 @@ public class RawResponseWriter implement
     }
   }
 
+@Override
 public void write(OutputStream out, SolrQueryRequest request,
     SolrQueryResponse response) throws IOException {
     Object obj = response.getValues().get( CONTENT );

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RubyResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RubyResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RubyResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/RubyResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -25,11 +25,13 @@ import org.apache.solr.request.SolrQuery
 public class RubyResponseWriter implements QueryResponseWriter {
   static String CONTENT_TYPE_RUBY_UTF8="text/x-ruby;charset=UTF-8";
 
+  @Override
   public void init(NamedList n) {
     /* NOOP */
   }
   
- public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
+ @Override
+public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     RubyWriter w = new RubyWriter(writer, req, rsp);
     try {
       w.writeResponse();
@@ -38,6 +40,7 @@ public class RubyResponseWriter implemen
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     return CONTENT_TYPE_TEXT_UTF8;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java Fri Jan 18 18:30:54 2013
@@ -20,6 +20,7 @@ package org.apache.solr.response;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.search.ReturnFields;
+import org.apache.solr.search.SolrReturnFields;
 
 import java.util.*;
 
@@ -123,7 +124,7 @@ public class SolrQueryResponse {
    */
   public ReturnFields getReturnFields() {
     if( returnFields == null ) {
-      returnFields = new ReturnFields(); // by default return everything
+      returnFields = new SolrReturnFields(); // by default return everything
     }
     return returnFields;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XMLResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XMLResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XMLResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XMLResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -27,10 +27,12 @@ import org.apache.solr.request.SolrQuery
  *
  */
 public class XMLResponseWriter implements QueryResponseWriter {
+  @Override
   public void init(NamedList n) {
     /* NOOP */
   }
 
+  @Override
   public void write(Writer writer, SolrQueryRequest req, SolrQueryResponse rsp) throws IOException {
     XMLWriter w = new XMLWriter(writer, req, rsp);
     try {
@@ -40,6 +42,7 @@ public class XMLResponseWriter implement
     }
   }
 
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     return CONTENT_TYPE_XML_UTF8;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XSLTResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XSLTResponseWriter.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XSLTResponseWriter.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/XSLTResponseWriter.java Fri Jan 18 18:30:54 2013
@@ -56,6 +56,7 @@ public class XSLTResponseWriter implemen
   private static final Logger log = LoggerFactory.getLogger(XSLTResponseWriter.class);
   private static final XMLErrorLogger xmllog = new XMLErrorLogger(log);
   
+  @Override
   public void init(NamedList n) {
       final SolrParams p = SolrParams.toSolrParams(n);
       xsltCacheLifetimeSeconds = p.getInt(XSLT_CACHE_PARAM,XSLT_CACHE_DEFAULT);
@@ -63,6 +64,7 @@ public class XSLTResponseWriter implemen
   }
 
   
+  @Override
   public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
     Transformer t = null;
     try {
@@ -91,6 +93,7 @@ public class XSLTResponseWriter implemen
     return mediaType;
   }
 
+  @Override
   public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) throws IOException {
     final Transformer t = getTransformer(request);
     

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java Fri Jan 18 18:30:54 2013
@@ -49,6 +49,7 @@ class ExcludedTransformer extends BaseEd
     super(name, idFieldName, ft);
   }
 
+  @Override
   protected Set<String> getIdSet() {
     return (Set<String>)context.req.getContext().get(QueryElevationComponent.EXCLUDED);
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/response/transform/TransformerFactory.java Fri Jan 18 18:30:54 2013
@@ -34,6 +34,7 @@ public abstract class TransformerFactory
 {
   protected String defaultUserArgs = null;
 
+  @Override
   public void init(NamedList args) {
     defaultUserArgs = (String)args.get( "args" );
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSpatialFieldType.java Fri Jan 18 18:30:54 2013
@@ -17,8 +17,14 @@ package org.apache.solr.schema;
  * limitations under the License.
  */
 
+import com.google.common.base.Throwables;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
 import com.spatial4j.core.context.SpatialContext;
 import com.spatial4j.core.context.SpatialContextFactory;
+import com.spatial4j.core.distance.DistanceUtils;
+import com.spatial4j.core.exception.InvalidShapeException;
+import com.spatial4j.core.io.ParseUtils;
 import com.spatial4j.core.shape.Point;
 import com.spatial4j.core.shape.Rectangle;
 import com.spatial4j.core.shape.Shape;
@@ -39,29 +45,36 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.response.TextResponseWriter;
 import org.apache.solr.search.QParser;
+import org.apache.solr.search.SpatialOptions;
 import org.apache.solr.util.MapListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
 
 /**
  * Abstract base class for Solr FieldTypes based on a Lucene 4 {@link SpatialStrategy}.
  *
  * @lucene.experimental
  */
-public abstract class AbstractSpatialFieldType<T extends SpatialStrategy> extends FieldType {
+public abstract class AbstractSpatialFieldType<T extends SpatialStrategy> extends FieldType implements SpatialQueryable {
 
   /** A local-param with one of "none" (default), "distance", or "recipDistance". */
   public static final String SCORE_PARAM = "score";
+  /** A local-param boolean that can be set to false to only return the
+   * FunctionQuery (score), and thus not do filtering.
+   */
+  public static final String FILTER_PARAM = "filter";
+
   protected final Logger log = LoggerFactory.getLogger( getClass() );
 
   protected SpatialContext ctx;
   protected SpatialArgsParser argsParser;
 
-  private final ConcurrentHashMap<String, T> fieldStrategyMap = new ConcurrentHashMap<String,T>();
+  private final Cache<String, T> fieldStrategyCache = CacheBuilder.newBuilder().build();
 
   @Override
   protected void init(IndexSchema schema, Map<String, String> args) {
@@ -86,20 +99,20 @@ public abstract class AbstractSpatialFie
 
   @Override
   public final Field createField(SchemaField field, Object val, float boost) {
-    throw new IllegalStateException("should be calling createFields because isPolyField() is true");
+    throw new IllegalStateException("instead call createFields() because isPolyField() is true");
   }
 
   @Override
-  public final Field[] createFields(SchemaField field, Object val, float boost) {
+  public Field[] createFields(SchemaField field, Object val, float boost) {
     String shapeStr = null;
     Shape shape = null;
     if (val instanceof Shape) {
       shape = ((Shape) val);
     } else {
       shapeStr = val.toString();
-      shape = ctx.readShape(shapeStr);
+      shape = parseShape(shapeStr);
     }
-    if( shape == null ) {
+    if (shape == null) {
       log.debug("Field {}: null shape for input: {}", field, val);
       return null;
     }
@@ -131,6 +144,14 @@ public abstract class AbstractSpatialFie
     }
   }
 
+  protected Shape parseShape(String shapeStr) {
+    try {
+      return ctx.readShape(shapeStr);
+    } catch (InvalidShapeException e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
+  }
+
   protected String shapeToString(Shape shape) {
     return ctx.toString(shape);
   }
@@ -147,12 +168,41 @@ public abstract class AbstractSpatialFie
   // Query Support
   //--------------------------------------------------------------
 
+  /**
+   * Implemented for compatibility with Solr 3 spatial geofilt & bbox query parsers:
+   * {@link SpatialQueryable}.
+   */
+  @Override
+  public Query createSpatialQuery(QParser parser, SpatialOptions options) {
+    //--WARNING: the code from here to the next marker is identical to LatLonType's impl.
+    double[] point = null;
+    try {
+      point = ParseUtils.parseLatitudeLongitude(options.pointStr);
+    } catch (InvalidShapeException e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
+
+    // lat & lon in degrees
+    double latCenter = point[0];
+    double lonCenter = point[1];
+
+    double distDeg = DistanceUtils.dist2Degrees(options.distance, options.radius);
+    //--END-WARNING
+
+    Shape shape = ctx.makeCircle(lonCenter, latCenter, distDeg);
+    if (options.bbox)
+      shape = shape.getBoundingBox();
+
+    SpatialArgs spatialArgs = new SpatialArgs(SpatialOperation.Intersects, shape);
+    return getQueryFromSpatialArgs(parser, options.field, spatialArgs);
+  }
+
   @Override
   public Query getRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive) {
     if (!minInclusive || !maxInclusive)
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Both sides of spatial range query must be inclusive: " + field.getName());
-    Shape shape1 = ctx.readShape(part1);
-    Shape shape2 = ctx.readShape(part2);
+    Shape shape1 = parseShape(part1);
+    Shape shape2 = parseShape(part2);
     if (!(shape1 instanceof Point) || !(shape2 instanceof Point))
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Both sides of spatial range query must be points: " + field.getName());
     Point p1 = (Point) shape1;
@@ -165,14 +215,22 @@ public abstract class AbstractSpatialFie
   @Override
   public ValueSource getValueSource(SchemaField field, QParser parser) {
     //This is different from Solr 3 LatLonType's approach which uses the MultiValueSource concept to directly expose
-    // the an x & y pair of FieldCache value sources.
+    // the x & y pair of FieldCache value sources.
     throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
         "A ValueSource isn't directly available from this field. Instead try a query using the distance as the score.");
   }
 
   @Override
   public Query getFieldQuery(QParser parser, SchemaField field, String externalVal) {
-    return getQueryFromSpatialArgs(parser, field, argsParser.parse(externalVal, ctx));
+    return getQueryFromSpatialArgs(parser, field, parseSpatialArgs(externalVal));
+  }
+
+  protected SpatialArgs parseSpatialArgs(String externalVal) {
+    try {
+      return argsParser.parse(externalVal, ctx);
+    } catch (Exception e) {
+      throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
+    }
   }
 
   private Query getQueryFromSpatialArgs(QParser parser, SchemaField field, SpatialArgs spatialArgs) {
@@ -196,9 +254,13 @@ public abstract class AbstractSpatialFie
       valueSource = strategy.makeRecipDistanceValueSource(spatialArgs.getShape());
     else
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "'score' local-param must be one of 'none', 'distance', or 'recipDistance'");
+    FunctionQuery functionQuery = new FunctionQuery(valueSource);
+
+    if (localParams != null && !localParams.getBool(FILTER_PARAM, true))
+      return functionQuery;
 
     Filter filter = strategy.makeFilter(spatialArgs);
-    return new FilteredQuery(new FunctionQuery(valueSource), filter);
+    return new FilteredQuery(functionQuery, filter);
   }
 
   /**
@@ -208,18 +270,16 @@ public abstract class AbstractSpatialFie
    * @return Non-null.
    */
   public T getStrategy(final String fieldName) {
-    T strategy = fieldStrategyMap.get(fieldName);
-    //double-checked locking idiom
-    if (strategy == null) {
-      synchronized (fieldStrategyMap) {
-        strategy = fieldStrategyMap.get(fieldName);
-        if (strategy == null) {
-          strategy = newSpatialStrategy(fieldName);
-          fieldStrategyMap.put(fieldName,strategy);
+    try {
+      return fieldStrategyCache.get(fieldName, new Callable<T>() {
+        @Override
+        public T call() throws Exception {
+          return newSpatialStrategy(fieldName);
         }
-      }
+      });
+    } catch (ExecutionException e) {
+      throw Throwables.propagate(e.getCause());
     }
-    return strategy;
   }
 
   @Override
@@ -229,7 +289,8 @@ public abstract class AbstractSpatialFie
 
   @Override
   public SortField getSortField(SchemaField field, boolean top) {
-    throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Sorting not supported on SpatialField: " + field.getName());
+    throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Sorting not supported on SpatialField: " + field.getName()+
+      ", instead try sorting by query.");
   }
 }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/AbstractSubTypeFieldType.java Fri Jan 18 18:30:54 2013
@@ -93,6 +93,7 @@ public abstract class AbstractSubTypeFie
     return proto;
   }
 
+  @Override
   public void inform(IndexSchema schema) {
     //Can't do this until here b/c the Dynamic Fields are not initialized until here.
     if (subType != null) {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/CurrencyField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/CurrencyField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/CurrencyField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/CurrencyField.java Fri Jan 18 18:30:54 2013
@@ -192,6 +192,7 @@ public class CurrencyField extends Field
    *
    * @param indexSchema The index schema.
    */
+  @Override
   public void inform(IndexSchema indexSchema) {
     createDynamicCurrencyField(FIELD_SUFFIX_CURRENCY,   fieldTypeCurrency);
     createDynamicCurrencyField(FIELD_SUFFIX_AMOUNT_RAW, fieldTypeAmountRaw);
@@ -202,6 +203,7 @@ public class CurrencyField extends Field
    *
    * @param resourceLoader The resource loader.
    */
+  @Override
   public void inform(ResourceLoader resourceLoader) {
     provider.inform(resourceLoader);
     boolean reloaded = provider.reload();
@@ -275,6 +277,7 @@ public class CurrencyField extends Field
       amountValues = amountField.getType().getValueSource(amountField, parser);
     }
 
+    @Override
     public FunctionValues getValues(Map context, AtomicReaderContext reader) throws IOException {
       final FunctionValues amounts = amountValues.getValues(context, reader);
       final FunctionValues currencies = currencyValues.getValues(context, reader);
@@ -310,6 +313,7 @@ public class CurrencyField extends Field
           }
         }
 
+        @Override
         public long longVal(int doc) {
           if (!initializedCache) {
             for (int i = 0; i < fractionDigitCache.length; i++) {
@@ -356,22 +360,27 @@ public class CurrencyField extends Field
           return CurrencyValue.convertAmount(exchangeRate, sourceFractionDigits, amount, targetFractionDigits);
         }
 
+        @Override
         public int intVal(int doc) {
           return (int) longVal(doc);
         }
 
+        @Override
         public double doubleVal(int doc) {
           return (double) longVal(doc);
         }
 
+        @Override
         public float floatVal(int doc) {
           return (float) longVal(doc);
         }
 
+        @Override
         public String strVal(int doc) {
           return Long.toString(longVal(doc));
         }
 
+        @Override
         public String toString(int doc) {
           return name() + '(' + amounts.toString(doc) + ',' + currencies.toString(doc) + ')';
         }
@@ -433,6 +442,7 @@ class FileExchangeRateProvider implement
    * @return The exchange rate.
    * @throws SolrException if the requested currency pair cannot be found
    */
+  @Override
   public double getExchangeRate(String sourceCurrencyCode, String targetCurrencyCode) {
     if (sourceCurrencyCode == null || targetCurrencyCode == null) {
       throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Cannot get exchange rate; currency was null.");
@@ -508,6 +518,7 @@ class FileExchangeRateProvider implement
     return rates != null ? rates.hashCode() : 0;
   }
 
+  @Override
   public String toString() {
     return "["+this.getClass().getName()+" : " + rates.size() + " rates.]";
   }
@@ -776,6 +787,7 @@ class CurrencyValue {
     return new CurrencyValue(convertAmount(exchangeRates, this.getCurrencyCode(), this.getAmount(), targetCurrencyCode), targetCurrencyCode);
   }
 
+  @Override
   public String toString() {
     return String.valueOf(amount) + "," + currencyCode;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/DateField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/DateField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/DateField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/DateField.java Fri Jan 18 18:30:54 2013
@@ -190,6 +190,7 @@ public class DateField extends Primitive
     }
   }
 
+  @Override
   public StorableField createField(SchemaField field, Object value, float boost) {
     // Convert to a string before indexing
     if(value instanceof Date) {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/FieldType.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/FieldType.java Fri Jan 18 18:30:54 2013
@@ -86,7 +86,7 @@ public abstract class FieldType extends 
   public boolean isMultiValued() {
     return (properties & MULTIVALUED) != 0;
   }
-  
+
   /** Check if a property is set */
   protected boolean hasProperty( int p ) {
     return (properties & p) != 0;

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/GeoHashField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/GeoHashField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/GeoHashField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/GeoHashField.java Fri Jan 18 18:30:54 2013
@@ -58,6 +58,7 @@ public class GeoHashField extends FieldT
     //QUESTION: Should we do a fast and crude one?  Or actually check distances
   //Fast and crude could use EdgeNGrams, but that would require a different
   //encoding.  Plus there are issues around the Equator/Prime Meridian
+  @Override
   public Query createSpatialQuery(QParser parser, SpatialOptions options) {
     double [] point = new double[0];
     try {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/IndexSchema.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/IndexSchema.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/IndexSchema.java Fri Jan 18 18:30:54 2013
@@ -498,7 +498,7 @@ public final class IndexSchema {
       }
 
       if (!uniqueKeyField.stored()) {
-        log.error("uniqueKey is not stored - distributed search will not work");
+        log.warn("uniqueKey is not stored - distributed search and MoreLikeThis will not work");
       }
       if (uniqueKeyField.multiValued()) {
         String msg = "uniqueKey field ("+uniqueKeyFieldName+
@@ -765,6 +765,7 @@ public final class IndexSchema {
      * as this object is less than, equal to, or greater than
      * the specified object.
      */
+    @Override
     public int compareTo(DynamicReplacement other) {
       return other.regex.length() - regex.length();
     }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java Fri Jan 18 18:30:54 2013
@@ -64,6 +64,7 @@ public class OpenExchangeRatesOrgProvide
    * @return The exchange rate.
    * @throws SolrException if the requested currency pair cannot be found
    */
+  @Override
   public double getExchangeRate(String sourceCurrencyCode, String targetCurrencyCode) {
     if (rates == null) {
       throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "Rates not initialized.");
@@ -105,6 +106,7 @@ public class OpenExchangeRatesOrgProvide
     return rates != null ? rates.hashCode() : 0;
   }
 
+  @Override
   public String toString() {
     return "["+this.getClass().getName()+" : " + rates.getRates().size() + " rates.]";
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PointType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PointType.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PointType.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PointType.java Fri Jan 18 18:30:54 2013
@@ -177,6 +177,7 @@ public class PointType extends Coordinat
    * @param options The {@link org.apache.solr.search.SpatialOptions} for this filter.
    * @return The Query representing the bounding box around the point.
    */
+  @Override
   public Query createSpatialQuery(QParser parser, SpatialOptions options) {
     Query result = null;
     double [] point = new double[0];

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java Fri Jan 18 18:30:54 2013
@@ -212,6 +212,7 @@ public class PreAnalyzedField extends Fi
       return binaryValue;
     }
     
+    @Override
     public final boolean incrementToken() {
       // lazy init the iterator
       if (it == null) {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PrimitiveFieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PrimitiveFieldType.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PrimitiveFieldType.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/PrimitiveFieldType.java Fri Jan 18 18:30:54 2013
@@ -28,7 +28,9 @@ public abstract class PrimitiveFieldType
   @Override
   protected void init(IndexSchema schema, Map<String,String> args) {
     super.init(schema, args);
-    if(schema.getVersion() > 1.4) {
+    if(schema.getVersion() > 1.4F &&
+       // only override if it's not explicitly false
+       0 == (falseProperties & OMIT_NORMS)) {
       properties |= OMIT_NORMS;
     }
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SimplePreAnalyzedParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SimplePreAnalyzedParser.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SimplePreAnalyzedParser.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SimplePreAnalyzedParser.java Fri Jan 18 18:30:54 2013
@@ -152,6 +152,7 @@ public final class SimplePreAnalyzedPars
       attr.clear();
     }
     
+    @Override
     public String toString() {
       return "tok='" + token + "',attr=" + attr;
     }
@@ -451,6 +452,7 @@ public final class SimplePreAnalyzedPars
     return resState;
   }
 
+  @Override
   public String toFormattedString(Field f) throws IOException {
     StringBuilder sb = new StringBuilder();
     sb.append(VERSION + " ");

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableFloatField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableFloatField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableFloatField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableFloatField.java Fri Jan 18 18:30:54 2013
@@ -87,6 +87,7 @@ public class SortableFloatField extends 
     return NumberUtils.SortableStr2floatStr(indexedForm);
   }
 
+  @Override
   public CharsRef indexedToReadable(BytesRef input, CharsRef charsRef) {
     // TODO: this could be more efficient, but the sortable types should be deprecated instead
     UnicodeUtil.UTF8toUTF16(input, charsRef);

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableIntField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableIntField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableIntField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableIntField.java Fri Jan 18 18:30:54 2013
@@ -85,6 +85,7 @@ public class SortableIntField extends Pr
     return NumberUtils.SortableStr2int(indexedForm);
   }
 
+  @Override
   public CharsRef indexedToReadable(BytesRef input, CharsRef charsRef) {
     // TODO: this could be more efficient, but the sortable types should be deprecated instead
     UnicodeUtil.UTF8toUTF16(input, charsRef);

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableLongField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableLongField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableLongField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/SortableLongField.java Fri Jan 18 18:30:54 2013
@@ -76,6 +76,7 @@ public class SortableLongField extends P
     return NumberUtils.SortableStr2long(indexedForm);
   }
 
+  @Override
   public CharsRef indexedToReadable(BytesRef input, CharsRef charsRef) {
     // TODO: this could be more efficient, but the sortable types should be deprecated instead
     UnicodeUtil.UTF8toUTF16(input, charsRef);

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/TextField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/TextField.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/TextField.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/schema/TextField.java Fri Jan 18 18:30:54 2013
@@ -62,8 +62,12 @@ public class TextField extends FieldType
   @Override
   protected void init(IndexSchema schema, Map<String,String> args) {
     properties |= TOKENIZED;
-    if (schema.getVersion()> 1.1f) properties &= ~OMIT_TF_POSITIONS;
-    if (schema.getVersion() > 1.3f) {
+    if (schema.getVersion() > 1.1F &&
+        // only override if it's not explicitly true
+        0 == (trueProperties & OMIT_TF_POSITIONS)) {
+      properties &= ~OMIT_TF_POSITIONS;
+    }
+    if (schema.getVersion() > 1.3F) {
       autoGeneratePhraseQueries = false;
     } else {
       autoGeneratePhraseQueries = true;

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BitDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BitDocSet.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BitDocSet.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BitDocSet.java Fri Jan 18 18:30:54 2013
@@ -86,28 +86,34 @@ public class BitDocSet extends DocSetBas
   }
   ***/
 
+  @Override
   public DocIterator iterator() {
     return new DocIterator() {
       private final OpenBitSetIterator iter = new OpenBitSetIterator(bits);
       private int pos = iter.nextDoc();
+      @Override
       public boolean hasNext() {
         return pos != DocIdSetIterator.NO_MORE_DOCS;
       }
 
+      @Override
       public Integer next() {
         return nextDoc();
       }
 
+      @Override
       public void remove() {
         bits.clear(pos);
       }
 
+      @Override
       public int nextDoc() {
         int old=pos;
         pos=iter.nextDoc();
         return old;
       }
 
+      @Override
       public float score() {
         return 0.0f;
       }
@@ -136,6 +142,7 @@ public class BitDocSet extends DocSetBas
     size=-1;  // invalidate size
   }
 
+  @Override
   public int size() {
     if (size!=-1) return size;
     return size=(int)bits.cardinality();
@@ -152,6 +159,7 @@ public class BitDocSet extends DocSetBas
   /** Returns true of the doc exists in the set.
    *  Should only be called when doc < OpenBitSet.size()
    */
+  @Override
   public boolean exists(int doc) {
     return bits.fastGet(doc);
   }
@@ -229,6 +237,7 @@ public class BitDocSet extends DocSetBas
   }
 
 
+  @Override
   public long memSize() {
     return (bits.getBits().length << 3) + 16;
   }

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BoostQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BoostQParserPlugin.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BoostQParserPlugin.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/BoostQParserPlugin.java Fri Jan 18 18:30:54 2013
@@ -20,7 +20,6 @@ import org.apache.lucene.queries.functio
 import org.apache.lucene.queries.function.FunctionQuery;
 import org.apache.lucene.queries.function.ValueSource;
 import org.apache.lucene.queries.function.valuesource.QueryValueSource;
-import org.apache.lucene.queryparser.classic.ParseException;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -41,6 +40,7 @@ public class BoostQParserPlugin extends 
   public static String NAME = "boost";
   public static String BOOSTFUNC = "b";
 
+  @Override
   public void init(NamedList args) {
   }
 
@@ -52,7 +52,7 @@ public class BoostQParserPlugin extends 
       String b;
 
       @Override
-      public Query parse() throws ParseException {
+      public Query parse() throws SyntaxError {
         b = localParams.get(BOOSTFUNC);
         baseParser = subQuery(localParams.get(QueryParsing.V), null);
         Query q = baseParser.getQuery();
@@ -74,7 +74,7 @@ public class BoostQParserPlugin extends 
       }
                                            
       @Override
-      public Query getHighlightQuery() throws ParseException {
+      public Query getHighlightQuery() throws SyntaxError {
         return baseParser.getHighlightQuery();
       }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParser.java Fri Jan 18 18:30:54 2013
@@ -16,12 +16,11 @@
  */
 package org.apache.solr.search;
 
-import org.apache.lucene.queryparser.classic.ParseException;
-import org.apache.lucene.queryparser.classic.QueryParser;
 import org.apache.lucene.search.BooleanClause;
 import org.apache.lucene.search.BooleanQuery;
 import org.apache.lucene.search.Query;
 import org.apache.solr.common.params.CommonParams;
+import org.apache.solr.parser.QueryParser;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.common.params.DisMaxParams;
 import org.apache.solr.common.params.SolrParams;
@@ -58,8 +57,8 @@ public class DisMaxQParser extends QPars
    */
   public static String parseMinShouldMatch(final IndexSchema schema, 
                                            final SolrParams params) {
-    QueryParser.Operator op = QueryParsing.getQueryParserDefaultOperator
-      (schema, params.get(QueryParsing.OP));
+    org.apache.solr.parser.QueryParser.Operator op = QueryParsing.getQueryParserDefaultOperator
+        (schema, params.get(QueryParsing.OP));
     return params.get(DisMaxParams.MM, 
                       op.equals(QueryParser.Operator.AND) ? "100%" : "0%");
   }
@@ -69,12 +68,12 @@ public class DisMaxQParser extends QPars
    * or {@link org.apache.solr.schema.IndexSchema#getDefaultSearchFieldName()}.
    */
   public static Map<String, Float> parseQueryFields(final IndexSchema indexSchema, final SolrParams solrParams)
-      throws ParseException {
+      throws SyntaxError {
     Map<String, Float> queryFields = SolrPluginUtils.parseFieldBoosts(solrParams.getParams(DisMaxParams.QF));
     if (queryFields.isEmpty()) {
       String df = QueryParsing.getDefaultField(indexSchema, solrParams.get(CommonParams.DF));
       if (df == null) {
-        throw new ParseException("Neither "+DisMaxParams.QF+", "+CommonParams.DF +", nor the default search field are present.");
+        throw new SyntaxError("Neither "+DisMaxParams.QF+", "+CommonParams.DF +", nor the default search field are present.");
       }
       queryFields.put(df, 1.0f);
     }
@@ -96,7 +95,7 @@ public class DisMaxQParser extends QPars
 
 
   @Override
-  public Query parse() throws ParseException {
+  public Query parse() throws SyntaxError {
     SolrParams solrParams = SolrParams.wrapDefaults(localParams, params);
 
     queryFields = parseQueryFields(req.getSchema(), solrParams);
@@ -115,7 +114,7 @@ public class DisMaxQParser extends QPars
     return query;
   }
 
-  protected void addBoostFunctions(BooleanQuery query, SolrParams solrParams) throws ParseException {
+  protected void addBoostFunctions(BooleanQuery query, SolrParams solrParams) throws SyntaxError {
     String[] boostFuncs = solrParams.getParams(DisMaxParams.BF);
     if (null != boostFuncs && 0 != boostFuncs.length) {
       for (String boostFunc : boostFuncs) {
@@ -133,7 +132,7 @@ public class DisMaxQParser extends QPars
     }
   }
 
-  protected void addBoostQuery(BooleanQuery query, SolrParams solrParams) throws ParseException {
+  protected void addBoostQuery(BooleanQuery query, SolrParams solrParams) throws SyntaxError {
     boostParams = solrParams.getParams(DisMaxParams.BQ);
     //List<Query> boostQueries = SolrPluginUtils.parseQueryStrings(req, boostParams);
     boostQueries = null;
@@ -168,7 +167,7 @@ public class DisMaxQParser extends QPars
   }
 
   /** Adds the main query to the query argument. If its blank then false is returned. */
-  protected boolean addMainQuery(BooleanQuery query, SolrParams solrParams) throws ParseException {
+  protected boolean addMainQuery(BooleanQuery query, SolrParams solrParams) throws SyntaxError {
     Map<String, Float> phraseFields = SolrPluginUtils.parseFieldBoosts(solrParams.getParams(DisMaxParams.PF));
     float tiebreaker = solrParams.getFloat(DisMaxParams.TIE, 0.0f);
 
@@ -206,7 +205,7 @@ public class DisMaxQParser extends QPars
     return true;
   }
 
-  protected Query getAlternateUserQuery(SolrParams solrParams) throws ParseException {
+  protected Query getAlternateUserQuery(SolrParams solrParams) throws SyntaxError {
     String altQ = solrParams.get(DisMaxParams.ALTQ);
     if (altQ != null) {
       QParser altQParser = subQuery(altQ, null);
@@ -216,7 +215,7 @@ public class DisMaxQParser extends QPars
     }
   }
 
-  protected Query getPhraseQuery(String userQuery, SolrPluginUtils.DisjunctionMaxQueryParser pp) throws ParseException {
+  protected Query getPhraseQuery(String userQuery, SolrPluginUtils.DisjunctionMaxQueryParser pp) throws SyntaxError {
     /* * * Add on Phrases for the Query * * */
 
     /* build up phrase boosting queries */
@@ -231,7 +230,9 @@ public class DisMaxQParser extends QPars
   }
 
   protected Query getUserQuery(String userQuery, SolrPluginUtils.DisjunctionMaxQueryParser up, SolrParams solrParams)
-          throws ParseException {
+          throws SyntaxError {
+
+
     String minShouldMatch = parseMinShouldMatch(req.getSchema(), solrParams);
     Query dis = up.parse(userQuery);
     Query query = dis;
@@ -261,7 +262,7 @@ public class DisMaxQParser extends QPars
   }
 
   @Override
-  public Query getHighlightQuery() throws ParseException {
+  public Query getHighlightQuery() throws SyntaxError {
     return parsedUserQuery == null ? altUserQuery : parsedUserQuery;
   }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DisMaxQParserPlugin.java Fri Jan 18 18:30:54 2013
@@ -112,6 +112,7 @@ import org.apache.solr.request.SolrQuery
 public class DisMaxQParserPlugin extends QParserPlugin {
   public static String NAME = "dismax";
 
+  @Override
   public void init(NamedList args) {
   }
 

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocList.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocList.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocList.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocList.java Fri Jan 18 18:30:54 2013
@@ -36,6 +36,7 @@ public interface DocList extends DocSet 
   /**
    * Returns the number of ids in this list.
    */
+  @Override
   public int size();
 
   /**
@@ -76,6 +77,7 @@ public interface DocList extends DocSet 
    * </p>
    * @see #hasScores
    */
+  @Override
   public DocIterator iterator();
     
   /** True if scores were retained */

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSetBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSetBase.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSetBase.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSetBase.java Fri Jan 18 18:30:54 2013
@@ -55,6 +55,7 @@ abstract class DocSetBase implements Doc
   /**
    * @throws SolrException Base implementation does not allow modifications
    */
+  @Override
   public void add(int doc) {
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,"Unsupported Operation");
   }
@@ -62,6 +63,7 @@ abstract class DocSetBase implements Doc
   /**
    * @throws SolrException Base implementation does not allow modifications
    */
+  @Override
   public void addUnique(int doc) {
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,"Unsupported Operation");
   }
@@ -71,6 +73,7 @@ abstract class DocSetBase implements Doc
    *
    * @see BitDocSet#getBits
    */
+  @Override
   public OpenBitSet getBits() {
     OpenBitSet bits = new OpenBitSet();
     for (DocIterator iter = iterator(); iter.hasNext();) {
@@ -79,6 +82,7 @@ abstract class DocSetBase implements Doc
     return bits;
   };
 
+  @Override
   public DocSet intersection(DocSet other) {
     // intersection is overloaded in the smaller DocSets to be more
     // efficient, so dispatch off of it instead.
@@ -92,6 +96,7 @@ abstract class DocSetBase implements Doc
     return new BitDocSet(newbits);
   }
 
+  @Override
   public boolean intersects(DocSet other) {
     // intersection is overloaded in the smaller DocSets to be more
     // efficient, so dispatch off of it instead.
@@ -103,12 +108,14 @@ abstract class DocSetBase implements Doc
   }
 
 
+  @Override
   public DocSet union(DocSet other) {
     OpenBitSet newbits = (OpenBitSet)(this.getBits().clone());
     newbits.or(other.getBits());
     return new BitDocSet(newbits);
   }
 
+  @Override
   public int intersectionSize(DocSet other) {
     // intersection is overloaded in the smaller DocSets to be more
     // efficient, so dispatch off of it instead.
@@ -119,20 +126,24 @@ abstract class DocSetBase implements Doc
     return intersection(other).size();
   }
 
+  @Override
   public int unionSize(DocSet other) {
     return this.size() + other.size() - this.intersectionSize(other);
   }
 
+  @Override
   public DocSet andNot(DocSet other) {
     OpenBitSet newbits = (OpenBitSet)(this.getBits().clone());
     newbits.andNot(other.getBits());
     return new BitDocSet(newbits);
   }
 
+  @Override
   public int andNotSize(DocSet other) {
     return this.size() - this.intersectionSize(other);
   }
 
+  @Override
   public Filter getTopFilter() {
     final OpenBitSet bs = getBits();
 
@@ -194,6 +205,7 @@ abstract class DocSetBase implements Doc
     };
   }
 
+  @Override
   public void setBitsOn(OpenBitSet target) {
     DocIterator iter = iterator();
     while (iter.hasNext()) {

Modified: lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSlice.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSlice.java?rev=1435287&r1=1435286&r2=1435287&view=diff
==============================================================================
--- lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSlice.java (original)
+++ lucene/dev/branches/LUCENE-2878/solr/core/src/java/org/apache/solr/search/DocSlice.java Fri Jan 18 18:30:54 2013
@@ -52,6 +52,7 @@ public class DocSlice extends DocSetBase
     this.maxScore=maxScore;
   }
 
+  @Override
   public DocList subset(int offset, int len) {
     if (this.offset == offset && this.len==len) return this;
 
@@ -65,20 +66,26 @@ public class DocSlice extends DocSetBase
     return new DocSlice(offset, realLen, docs, scores, matches, maxScore);
   }
 
+  @Override
   public boolean hasScores() {
     return scores!=null;
   }
 
+  @Override
   public float maxScore() {
     return maxScore;
   }
 
 
+  @Override
   public int offset()  { return offset; }
+  @Override
   public int size()    { return len; }
+  @Override
   public int matches() { return matches; }
 
 
+  @Override
   public long memSize() {
     return (docs.length<<2)
             + (scores==null ? 0 : (scores.length<<2))
@@ -86,6 +93,7 @@ public class DocSlice extends DocSetBase
   }
 
 
+  @Override
   public boolean exists(int doc) {
     int end = offset+len;
     for (int i=offset; i<end; i++) {
@@ -96,14 +104,17 @@ public class DocSlice extends DocSetBase
 
   // Hmmm, maybe I could have reused the scorer interface here...
   // except that it carries Similarity baggage...
+  @Override
   public DocIterator iterator() {
     return new DocIterator() {
       int pos=offset;
       final int end=offset+len;
+      @Override
       public boolean hasNext() {
         return pos < end;
       }
 
+      @Override
       public Integer next() {
         return nextDoc();
       }
@@ -111,14 +122,17 @@ public class DocSlice extends DocSetBase
       /**
        * The remove  operation is not supported by this Iterator.
        */
+      @Override
       public void remove() {
         throw new UnsupportedOperationException("The remove  operation is not supported by this Iterator.");
       }
 
+      @Override
       public int nextDoc() {
         return docs[pos++];
       }
 
+      @Override
       public float score() {
         return scores[pos-1];
       }