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];
}