You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2012/11/23 21:31:06 UTC
svn commit: r1413047 [2/2] - in /lucene/dev/branches/branch_4x: ./
dev-tools/ lucene/ lucene/analysis/
lucene/analysis/icu/src/java/org/apache/lucene/collation/ lucene/backwards/
lucene/benchmark/ lucene/codecs/ lucene/core/ lucene/core/src/test/org/ap...
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -26,7 +26,6 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.docvalues.DoubleDocValues;
import org.apache.lucene.queries.function.docvalues.LongDocValues;
import org.apache.lucene.queries.function.valuesource.*;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.SortField;
@@ -61,7 +60,7 @@ public abstract class ValueSourceParser
/**
* Parse the user input into a ValueSource.
*/
- public abstract ValueSource parse(FunctionQParser fp) throws ParseException;
+ public abstract ValueSource parse(FunctionQParser fp) throws SyntaxError;
/* standard functions */
public static Map<String, ValueSourceParser> standardValueSourceParsers = new HashMap<String, ValueSourceParser>();
@@ -87,33 +86,33 @@ public abstract class ValueSourceParser
static {
addParser("testfunc", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
final ValueSource source = fp.parseValueSource();
return new TestValueSource(source);
}
});
addParser("ord", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String field = fp.parseId();
return new OrdFieldSource(field);
}
});
addParser("literal", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new LiteralValueSource(fp.parseArg());
}
});
addParser("threadid", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new LongConstValueSource(Thread.currentThread().getId());
}
});
addParser("sleep", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
int ms = fp.parseInt();
ValueSource source = fp.parseValueSource();
try {
@@ -126,14 +125,14 @@ public abstract class ValueSourceParser
});
addParser("rord", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String field = fp.parseId();
return new ReverseOrdFieldSource(field);
}
});
addParser("top", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
// top(vs) is now a no-op
ValueSource source = fp.parseValueSource();
return source;
@@ -141,7 +140,7 @@ public abstract class ValueSourceParser
});
addParser("linear", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
float slope = fp.parseFloat();
float intercept = fp.parseFloat();
@@ -150,7 +149,7 @@ public abstract class ValueSourceParser
});
addParser("recip", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
float m = fp.parseFloat();
float a = fp.parseFloat();
@@ -160,7 +159,7 @@ public abstract class ValueSourceParser
});
addParser("scale", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
float min = fp.parseFloat();
float max = fp.parseFloat();
@@ -169,7 +168,7 @@ public abstract class ValueSourceParser
});
addParser("div", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
return new DivFloatFunction(a, b);
@@ -177,7 +176,7 @@ public abstract class ValueSourceParser
});
addParser("mod", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
return new DualFloatFunction(a, b) {
@@ -194,7 +193,7 @@ public abstract class ValueSourceParser
});
addParser("map", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
float min = fp.parseFloat();
float max = fp.parseFloat();
@@ -206,7 +205,7 @@ public abstract class ValueSourceParser
addParser("abs", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
return new SimpleFloatFunction(source) {
@Override
@@ -223,7 +222,7 @@ public abstract class ValueSourceParser
});
addParser("sum", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new SumFloatFunction(sources.toArray(new ValueSource[sources.size()]));
}
@@ -232,7 +231,7 @@ public abstract class ValueSourceParser
addParser("product", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new ProductFloatFunction(sources.toArray(new ValueSource[sources.size()]));
}
@@ -241,7 +240,7 @@ public abstract class ValueSourceParser
addParser("sub", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
return new DualFloatFunction(a, b) {
@@ -259,14 +258,14 @@ public abstract class ValueSourceParser
});
addParser("vector", new ValueSourceParser(){
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException{
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new VectorValueSource(fp.parseValueSourceList());
}
});
addParser("query", new ValueSourceParser() {
// boost(query($q),rating)
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
Query q = fp.parseNestedQuery();
float defVal = 0.0f;
if (fp.hasMoreArguments()) {
@@ -277,7 +276,7 @@ public abstract class ValueSourceParser
});
addParser("boost", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
Query q = fp.parseNestedQuery();
ValueSource vs = fp.parseValueSource();
BoostedQuery bq = new BoostedQuery(q, vs);
@@ -286,7 +285,7 @@ public abstract class ValueSourceParser
});
addParser("joindf", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String f0 = fp.parseArg();
String qf = fp.parseArg();
return new JoinDocFreqValueSource( f0, qf );
@@ -297,7 +296,7 @@ public abstract class ValueSourceParser
addParser("hsin", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
double radius = fp.parseDouble();
//SOLR-2114, make the convert flag required, since the parser doesn't support much in the way of lookahead or the ability to convert a String into a ValueSource
@@ -338,7 +337,7 @@ public abstract class ValueSourceParser
addParser("ghhsin", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
double radius = fp.parseDouble();
ValueSource gh1 = fp.parseValueSource();
@@ -350,7 +349,7 @@ public abstract class ValueSourceParser
addParser("geohash", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource lat = fp.parseValueSource();
ValueSource lon = fp.parseValueSource();
@@ -360,7 +359,7 @@ public abstract class ValueSourceParser
});
addParser("strdist", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource str1 = fp.parseValueSource();
ValueSource str2 = fp.parseValueSource();
@@ -385,7 +384,7 @@ public abstract class ValueSourceParser
});
addParser("field", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String fieldName = fp.parseArg();
SchemaField f = fp.getReq().getSchema().getField(fieldName);
@@ -527,21 +526,21 @@ public abstract class ValueSourceParser
});
addParser("max", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new MaxFloatFunction(sources.toArray(new ValueSource[sources.size()]));
}
});
addParser("min", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new MinFloatFunction(sources.toArray(new ValueSource[sources.size()]));
}
});
addParser("sqedist", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
MVResult mvr = getMultiValueSources(sources);
@@ -551,7 +550,7 @@ public abstract class ValueSourceParser
addParser("dist", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
float power = fp.parseFloat();
List<ValueSource> sources = fp.parseValueSourceList();
MVResult mvr = getMultiValueSources(sources);
@@ -577,7 +576,7 @@ public abstract class ValueSourceParser
addParser("docfreq", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = parseTerm(fp);
return new DocFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
}
@@ -585,7 +584,7 @@ public abstract class ValueSourceParser
addParser("totaltermfreq", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = parseTerm(fp);
return new TotalTermFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
}
@@ -594,7 +593,7 @@ public abstract class ValueSourceParser
addParser("sumtotaltermfreq", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String field = fp.parseArg();
return new SumTotalTermFreqValueSource(field);
}
@@ -603,7 +602,7 @@ public abstract class ValueSourceParser
addParser("idf", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = parseTerm(fp);
return new IDFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
}
@@ -611,7 +610,7 @@ public abstract class ValueSourceParser
addParser("termfreq", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = parseTerm(fp);
return new TermFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
}
@@ -619,7 +618,7 @@ public abstract class ValueSourceParser
addParser("tf", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = parseTerm(fp);
return new TFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
}
@@ -627,7 +626,7 @@ public abstract class ValueSourceParser
addParser("norm", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String field = fp.parseArg();
return new NormValueSource(field);
}
@@ -663,7 +662,7 @@ public abstract class ValueSourceParser
addParser("exists", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource vs = fp.parseValueSource();
return new SimpleBoolFunction(vs) {
@Override
@@ -680,7 +679,7 @@ public abstract class ValueSourceParser
addParser("not", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource vs = fp.parseValueSource();
return new SimpleBoolFunction(vs) {
@Override
@@ -698,7 +697,7 @@ public abstract class ValueSourceParser
addParser("and", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new MultiBoolFunction(sources) {
@Override
@@ -717,7 +716,7 @@ public abstract class ValueSourceParser
addParser("or", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new MultiBoolFunction(sources) {
@Override
@@ -736,7 +735,7 @@ public abstract class ValueSourceParser
addParser("xor", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
return new MultiBoolFunction(sources) {
@Override
@@ -758,7 +757,7 @@ public abstract class ValueSourceParser
addParser("if", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource ifValueSource = fp.parseValueSource();
ValueSource trueValueSource = fp.parseValueSource();
ValueSource falseValueSource = fp.parseValueSource();
@@ -769,14 +768,14 @@ public abstract class ValueSourceParser
addParser("def", new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new DefFunction(fp.parseValueSourceList());
}
});
}
- private static TInfo parseTerm(FunctionQParser fp) throws ParseException {
+ private static TInfo parseTerm(FunctionQParser fp) throws SyntaxError {
TInfo tinfo = new TInfo();
tinfo.indexedField = tinfo.field = fp.parseArg();
@@ -888,7 +887,7 @@ class DateValueSourceParser extends Valu
}
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
String first = fp.parseArg();
String second = fp.parseArg();
if (first == null) first = "NOW";
@@ -1079,7 +1078,7 @@ abstract class DoubleParser extends Name
public abstract double func(int doc, FunctionValues vals);
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new Function(fp.parseValueSource());
}
@@ -1119,7 +1118,7 @@ abstract class Double2Parser extends Nam
public abstract double func(int doc, FunctionValues a, FunctionValues b);
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
return new Function(fp.parseValueSource(), fp.parseValueSource());
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java Fri Nov 23 20:30:59 2012
@@ -24,7 +24,6 @@ import org.apache.lucene.queries.functio
import org.apache.lucene.queries.function.valuesource.DoubleConstValueSource;
import org.apache.lucene.queries.function.valuesource.MultiValueSource;
import org.apache.lucene.queries.function.valuesource.VectorValueSource;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.IndexSearcher;
import com.spatial4j.core.io.ParseUtils;
import com.spatial4j.core.distance.DistanceUtils;
@@ -32,6 +31,7 @@ import com.spatial4j.core.exception.Inva
import org.apache.solr.common.params.SpatialParams;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.search.ValueSourceParser;
import java.io.IOException;
@@ -48,7 +48,7 @@ public class HaversineConstFunction exte
public static ValueSourceParser parser = new ValueSourceParser() {
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError
{
// TODO: dispatch through SpatialQueryable in the future?
List<ValueSource> sources = fp.parseValueSourceList();
@@ -65,7 +65,7 @@ public class HaversineConstFunction exte
} else if (sources.size() == 1) {
ValueSource vs = sources.get(0);
if (!(vs instanceof MultiValueSource)) {
- throw new ParseException("geodist - invalid parameters:" + sources);
+ throw new SyntaxError("geodist - invalid parameters:" + sources);
}
mv1 = (MultiValueSource)vs;
} else if (sources.size() == 2) {
@@ -88,7 +88,7 @@ public class HaversineConstFunction exte
mv1 = makeMV(sources.subList(0,2), sources);
vs1 = sources.get(2);
if (!(vs1 instanceof MultiValueSource)) {
- throw new ParseException("geodist - invalid parameters:" + sources);
+ throw new SyntaxError("geodist - invalid parameters:" + sources);
}
mv2 = (MultiValueSource)vs1;
}
@@ -96,7 +96,7 @@ public class HaversineConstFunction exte
mv1 = makeMV(sources.subList(0,2), sources);
mv2 = makeMV(sources.subList(2,4), sources);
} else if (sources.size() > 4) {
- throw new ParseException("geodist - invalid parameters:" + sources);
+ throw new SyntaxError("geodist - invalid parameters:" + sources);
}
if (mv1 == null) {
@@ -109,7 +109,7 @@ public class HaversineConstFunction exte
}
if (mv1 == null || mv2 == null) {
- throw new ParseException("geodist - not enough parameters:" + sources);
+ throw new SyntaxError("geodist - not enough parameters:" + sources);
}
// We have all the parameters at this point, now check if one of the points is constant
@@ -130,24 +130,24 @@ public class HaversineConstFunction exte
};
/** make a MultiValueSource from two non MultiValueSources */
- private static VectorValueSource makeMV(List<ValueSource> sources, List<ValueSource> orig) throws ParseException {
+ private static VectorValueSource makeMV(List<ValueSource> sources, List<ValueSource> orig) throws SyntaxError {
ValueSource vs1 = sources.get(0);
ValueSource vs2 = sources.get(1);
if (vs1 instanceof MultiValueSource || vs2 instanceof MultiValueSource) {
- throw new ParseException("geodist - invalid parameters:" + orig);
+ throw new SyntaxError("geodist - invalid parameters:" + orig);
}
return new VectorValueSource(sources);
}
- private static MultiValueSource parsePoint(FunctionQParser fp) throws ParseException {
+ private static MultiValueSource parsePoint(FunctionQParser fp) throws SyntaxError {
String pt = fp.getParam(SpatialParams.POINT);
if (pt == null) return null;
double[] point = null;
try {
point = ParseUtils.parseLatitudeLongitude(pt);
} catch (InvalidShapeException e) {
- throw new ParseException("Bad spatial pt:" + pt);
+ throw new SyntaxError("Bad spatial pt:" + pt);
}
return new VectorValueSource(Arrays.<ValueSource>asList(new DoubleConstValueSource(point[0]),new DoubleConstValueSource(point[1])));
}
@@ -161,13 +161,13 @@ public class HaversineConstFunction exte
return null;
}
- private static MultiValueSource parseSfield(FunctionQParser fp) throws ParseException {
+ private static MultiValueSource parseSfield(FunctionQParser fp) throws SyntaxError {
String sfield = fp.getParam(SpatialParams.FIELD);
if (sfield == null) return null;
SchemaField sf = fp.getReq().getSchema().getField(sfield);
ValueSource vs = sf.getType().getValueSource(sf, fp);
if (!(vs instanceof MultiValueSource)) {
- throw new ParseException("Spatial field must implement MultiValueSource:" + sf);
+ throw new SyntaxError("Spatial field must implement MultiValueSource:" + sf);
}
return (MultiValueSource)vs;
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/search/grouping/distributed/command/QueryCommand.java Fri Nov 23 20:30:59 2012
@@ -17,12 +17,12 @@ package org.apache.solr.search.grouping.
* limitations under the License.
*/
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.*;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.DocSet;
import org.apache.solr.search.QParser;
import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.search.grouping.Command;
import org.apache.solr.search.grouping.collector.FilterCollector;
@@ -61,9 +61,8 @@ public class QueryCommand implements Com
* @param groupQueryString The group query string to parse
* @param request The current request
* @return this
- * @throws ParseException If parsing the groupQueryString failed
*/
- public Builder setQuery(String groupQueryString, SolrQueryRequest request) throws ParseException {
+ public Builder setQuery(String groupQueryString, SolrQueryRequest request) throws SyntaxError {
QParser parser = QParser.getParser(groupQueryString, null, request);
this.queryString = groupQueryString;
return setQuery(parser.getQuery());
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Fri Nov 23 20:30:59 2012
@@ -37,7 +37,6 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery;
@@ -58,6 +57,7 @@ import org.apache.solr.response.SolrQuer
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.FunctionRangeQuery;
import org.apache.solr.search.QParser;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.search.QueryUtils;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.function.ValueSourceRangeFilter;
@@ -318,7 +318,7 @@ public class DirectUpdateHandler2 extend
return q;
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/util/SolrPluginUtils.java Fri Nov 23 20:30:59 2012
@@ -19,8 +19,6 @@ package org.apache.solr.util;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.queryparser.classic.ParseException;
-import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.solr.common.SolrDocument;
@@ -28,7 +26,6 @@ import org.apache.solr.common.SolrDocume
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.params.UpdateParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
@@ -36,13 +33,12 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.component.HighlightComponent;
import org.apache.solr.handler.component.ResponseBuilder;
import org.apache.solr.highlight.SolrHighlighter;
+import org.apache.solr.parser.QueryParser;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.search.*;
-import org.apache.solr.update.DocumentBuilder;
-import org.slf4j.Logger;
import java.io.IOException;
import java.util.*;
@@ -384,7 +380,7 @@ public class SolrPluginUtils {
DocList results = req.getSearcher().getDocList(query,(DocSet)null, sort, start, limit);
return results;
- } catch (ParseException e) {
+ } catch (SyntaxError e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Error parsing query: " + qs);
}
@@ -602,8 +598,6 @@ public class SolrPluginUtils {
/**
* Escapes all special characters except '"', '-', and '+'
- *
- * @see QueryParser#escape
*/
public static CharSequence partialEscape(CharSequence s) {
StringBuilder sb = new StringBuilder();
@@ -724,7 +718,7 @@ public class SolrPluginUtils {
*/
@Override
protected Query getFieldQuery(String field, String queryText, boolean quoted)
- throws ParseException {
+ throws SyntaxError {
if (aliases.containsKey(field)) {
@@ -796,7 +790,7 @@ public class SolrPluginUtils {
* @return null if no queries are generated
*/
public static List<Query> parseQueryStrings(SolrQueryRequest req,
- String[] queries) throws ParseException {
+ String[] queries) throws SyntaxError {
if (null == queries || 0 == queries.length) return null;
List<Query> out = new ArrayList<Query>(queries.length);
for (String q : queries) {
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/DummyValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -19,9 +19,9 @@ package org.apache.solr.core;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.search.ValueSourceParser;
@@ -38,7 +38,7 @@ public class DummyValueSourceParser exte
}
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
ValueSource result = new SimpleFloatFunction(source) {
@Override
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java Fri Nov 23 20:30:59 2012
@@ -29,7 +29,6 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;
import org.apache.solr.common.SolrException;
@@ -96,7 +95,7 @@ public class TestArbitraryIndexDir exten
}
@Test
- public void testLoadNewIndexDir() throws IOException, ParserConfigurationException, SAXException, ParseException {
+ public void testLoadNewIndexDir() throws IOException, ParserConfigurationException, SAXException {
//add a doc in original index dir
assertU(adoc("id", String.valueOf(1),
"name", "name"+String.valueOf(1)));
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/FooQParserPlugin.java Fri Nov 23 20:30:59 2012
@@ -17,7 +17,6 @@
package org.apache.solr.search;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.request.SolrQueryRequest;
@@ -42,7 +41,7 @@ class FooQParser extends QParser {
}
@Override
- public Query parse() throws ParseException {
+ public Query parse() throws SyntaxError {
return new TermQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
}
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestExtendedDismaxParser.java Fri Nov 23 20:30:59 2012
@@ -769,7 +769,7 @@ public class TestExtendedDismaxParser ex
"defType", "edismax")
, "*[count(//doc)=1]");
- // Query string field 'cat_s' for special char / - causes ParseException without patch SOLR-3467
+ // Query string field 'cat_s' for special char / - causes SyntaxError without patch SOLR-3467
assertQ("Escaping string with reserved / character",
req("q", "foo/",
"qf", "cat_s",
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestSolrQueryParser.java Fri Nov 23 20:30:59 2012
@@ -35,6 +35,12 @@ public class TestSolrQueryParser extends
assertU(adoc("id","1", "text",v, "text_np",v));
v="now cow";
assertU(adoc("id","2", "text",v, "text_np",v));
+ assertU(adoc("id","3", "foo_s","a ' \" \\ {! ) } ( { z")); // A value filled with special chars
+
+ assertU(adoc("id","10", "qqq_s","X"));
+ assertU(adoc("id","11", "www_s","X"));
+ assertU(adoc("id","12", "eee_s","X"));
+
assertU(commit());
}
@@ -49,4 +55,35 @@ public class TestSolrQueryParser extends
,"//*[@numFound='2']"
);
}
+
+ @Test
+ public void testLocalParamsInQP() throws Exception {
+ assertJQ(req("q","qaz {!term f=text v=$qq} wsx", "qq","now")
+ ,"/response/numFound==2"
+ );
+
+ assertJQ(req("q","qaz {!term f=text v=$qq} wsx", "qq","nomatch")
+ ,"/response/numFound==0"
+ );
+
+ assertJQ(req("q","qaz {!term f=text}now wsx", "qq","now")
+ ,"/response/numFound==2"
+ );
+
+ assertJQ(req("q","qaz {!term f=foo_s v='a \\' \" \\\\ {! ) } ( { z'} wsx") // single quote escaping
+ ,"/response/numFound==1"
+ );
+
+ assertJQ(req("q","qaz {!term f=foo_s v=\"a ' \\\" \\\\ {! ) } ( { z\"} wsx") // double quote escaping
+ ,"/response/numFound==1"
+ );
+
+ // double-join to test back-to-back local params
+ assertJQ(req("q","qaz {!join from=www_s to=eee_s}{!join from=qqq_s to=www_s}id:10" )
+ ,"/response/docs/[0]/id=='12'"
+ );
+
+
+ }
+
}
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/TestValueSourceCache.java Fri Nov 23 20:30:59 2012
@@ -17,7 +17,6 @@ package org.apache.solr.search;
* limitations under the License.
*/
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryUtils;
import org.apache.solr.SolrTestCaseJ4;
@@ -41,14 +40,14 @@ public class TestValueSourceCache extend
_func = null;
}
- Query getQuery(String query) throws ParseException {
+ Query getQuery(String query) throws SyntaxError {
_func.setString(query);
return _func.parse();
}
// This is actually also tested by the tests for val_d1 below, but the bug was reported against geodist()...
@Test
- public void testGeodistSource() throws ParseException {
+ public void testGeodistSource() throws SyntaxError {
Query q_home = getQuery("geodist(home_ll, 45.0, 43.0)");
Query q_work = getQuery("geodist(work_ll, 45.0, 43.0)");
Query q_home2 = getQuery("geodist(home_ll, 45.0, 43.0)");
@@ -57,7 +56,7 @@ public class TestValueSourceCache extend
}
@Test
- public void testNumerics() throws ParseException {
+ public void testNumerics() throws SyntaxError {
String[] templates = new String[]{
"sum(#v0, #n0)",
"product(pow(#v0,#n0),#v1,#n1)",
@@ -94,7 +93,7 @@ public class TestValueSourceCache extend
// This test should will fail because q1 and q3 evaluate as equal unless
// fixes for bug 2829 are in place.
- void tryQuerySameTypes(String template, String numbers, String type) throws ParseException {
+ void tryQuerySameTypes(String template, String numbers, String type) throws SyntaxError {
String s1 = template;
String s2 = template;
String s3 = template;
@@ -120,7 +119,7 @@ public class TestValueSourceCache extend
// These should always and forever fail, and would have failed without the fixes for 2829, but why not make
// some more tests just in case???
- void tryQueryDiffTypes(String template, String numbers, String[] types) throws ParseException {
+ void tryQueryDiffTypes(String template, String numbers, String[] types) throws SyntaxError {
String s1 = template;
String s2 = template;
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/search/function/NvlValueSourceParser.java Fri Nov 23 20:30:59 2012
@@ -20,9 +20,9 @@ package org.apache.solr.search.function;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.valuesource.SimpleFloatFunction;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.search.FunctionQParser;
+import org.apache.solr.search.SyntaxError;
import org.apache.solr.search.ValueSourceParser;
/**
@@ -46,7 +46,7 @@ public class NvlValueSourceParser extend
private float nvlFloatValue = 0.0f;
@Override
- public ValueSource parse(FunctionQParser fp) throws ParseException {
+ public ValueSource parse(FunctionQParser fp) throws SyntaxError {
ValueSource source = fp.parseValueSource();
final float nvl = fp.parseFloat();
Modified: lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java?rev=1413047&r1=1413046&r2=1413047&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/test/org/apache/solr/util/DateMathParserTest.java Fri Nov 23 20:30:59 2012
@@ -329,7 +329,7 @@ public class DateMathParserTest extends
for (String command : badCommands.keySet()) {
try {
Date out = p.parseMath(command);
- fail("Didn't generate ParseException for: " + command);
+ fail("Didn't generate SyntaxError for: " + command);
} catch (ParseException e) {
assertEquals("Wrong pos for: " + command + " => " + e.getMessage(),
badCommands.get(command).intValue(), e.getErrorOffset());