You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/05/02 15:51:22 UTC
svn commit: r1098566 [21/22] - in /lucene/dev/branches/docvalues: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/lucene/contrib/ant/
dev-tools/idea/lucene/contrib/db/bdb-je/
dev-tools/idea/lucene/contrib/db/bdb/ dev-tools/idea/lucene/contri...
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java Mon May 2 13:50:57 2011
@@ -63,53 +63,29 @@ public class OrdFieldSource extends Valu
final int off = readerContext.docBase;
final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader;
final FieldCache.DocTermsIndex sindex = FieldCache.DEFAULT.getTermsIndex(topReader, field);
- return new DocValues() {
+ return new IntDocValues(this) {
protected String toTerm(String readableValue) {
return readableValue;
}
-
- @Override
- public float floatVal(int doc) {
- return (float)sindex.getOrd(doc+off);
- }
-
@Override
public int intVal(int doc) {
return sindex.getOrd(doc+off);
}
-
- @Override
- public long longVal(int doc) {
- return (long)sindex.getOrd(doc+off);
- }
-
- @Override
- public double doubleVal(int doc) {
- return (double)sindex.getOrd(doc+off);
- }
-
@Override
public int ordVal(int doc) {
return sindex.getOrd(doc+off);
}
-
@Override
public int numOrd() {
return sindex.numOrd();
}
@Override
- public String strVal(int doc) {
- // the string value of the ordinal, not the string itself
- return Integer.toString(sindex.getOrd(doc+off));
+ public boolean exists(int doc) {
+ return sindex.getOrd(doc+off) != 0;
}
@Override
- public String toString(int doc) {
- return description() + '=' + intVal(doc);
- }
-
- @Override
public ValueFiller getValueFiller() {
return new ValueFiller() {
private final MutableValueInt mval = new MutableValueInt();
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/QueryValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/QueryValueSource.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/QueryValueSource.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/QueryValueSource.java Mon May 2 13:50:57 2011
@@ -23,6 +23,8 @@ import org.apache.lucene.search.*;
import org.apache.lucene.search.Weight.ScorerContext;
import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.common.SolrException;
+import org.apache.solr.search.MutableValue;
+import org.apache.solr.search.MutableValueFloat;
import java.io.IOException;
import java.util.Map;
@@ -49,7 +51,7 @@ public class QueryValueSource extends Va
@Override
public DocValues getValues(Map fcontext, AtomicReaderContext readerContext) throws IOException {
- return new QueryDocValues(readerContext, q, defVal, fcontext);
+ return new QueryDocValues(this, readerContext, fcontext);
}
@Override
@@ -72,31 +74,31 @@ public class QueryValueSource extends Va
}
-class QueryDocValues extends DocValues {
- final Query q;
-// final IndexReader reader;
+class QueryDocValues extends FloatDocValues {
final AtomicReaderContext readerContext;
final Weight weight;
final float defVal;
final Map fcontext;
+ final Query q;
Scorer scorer;
int scorerDoc; // the document the scorer is on
+ boolean noMatches=false;
// the last document requested... start off with high value
// to trigger a scorer reset on first access.
int lastDocRequested=Integer.MAX_VALUE;
- public QueryDocValues(AtomicReaderContext readerContext, Query q, float defVal, Map fcontext) throws IOException {
- IndexReader reader = readerContext.reader;
+ public QueryDocValues(QueryValueSource vs, AtomicReaderContext readerContext, Map fcontext) throws IOException {
+ super(vs);
+
this.readerContext = readerContext;
- this.q = q;
- this.defVal = defVal;
+ this.defVal = vs.defVal;
+ this.q = vs.q;
this.fcontext = fcontext;
Weight w = fcontext==null ? null : (Weight)fcontext.get(q);
- // TODO: sort by function doesn't weight (SOLR-1297 is open because of this bug)... so weightSearcher will currently be null
if (w == null) {
IndexSearcher weightSearcher;
if(fcontext == null) {
@@ -116,8 +118,12 @@ class QueryDocValues extends DocValues {
public float floatVal(int doc) {
try {
if (doc < lastDocRequested) {
+ if (noMatches) return defVal;
scorer = weight.scorer(readerContext, ScorerContext.def());
- if (scorer==null) return defVal;
+ if (scorer==null) {
+ noMatches = true;
+ return defVal;
+ }
scorerDoc = -1;
}
lastDocRequested = doc;
@@ -137,24 +143,104 @@ class QueryDocValues extends DocValues {
} catch (IOException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "caught exception in QueryDocVals("+q+") doc="+doc, e);
}
- }
-
- @Override
- public int intVal(int doc) {
- return (int)floatVal(doc);
- }
- @Override
- public long longVal(int doc) {
- return (long)floatVal(doc);
}
+
@Override
- public double doubleVal(int doc) {
- return (double)floatVal(doc);
+ public boolean exists(int doc) {
+ try {
+ if (doc < lastDocRequested) {
+ if (noMatches) return false;
+ scorer = weight.scorer(readerContext, ScorerContext.def());
+ scorerDoc = -1;
+ if (scorer==null) {
+ noMatches = true;
+ return false;
+ }
+ }
+ lastDocRequested = doc;
+
+ if (scorerDoc < doc) {
+ scorerDoc = scorer.advance(doc);
+ }
+
+ if (scorerDoc > doc) {
+ // query doesn't match this document... either because we hit the
+ // end, or because the next doc is after this doc.
+ return false;
+ }
+
+ // a match!
+ return true;
+ } catch (IOException e) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "caught exception in QueryDocVals("+q+") doc="+doc, e);
+ }
}
- @Override
- public String strVal(int doc) {
- return Float.toString(floatVal(doc));
+
+ @Override
+ public Object objectVal(int doc) {
+ try {
+ return exists(doc) ? scorer.score() : null;
+ } catch (IOException e) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "caught exception in QueryDocVals("+q+") doc="+doc, e);
+ }
+ }
+
+ @Override
+ public ValueFiller getValueFiller() {
+ //
+ // TODO: if we want to support more than one value-filler or a value-filler in conjunction with
+ // the DocValues, then members like "scorer" should be per ValueFiller instance.
+ // Or we can say that the user should just instantiate multiple DocValues.
+ //
+ return new ValueFiller() {
+ private final MutableValueFloat mval = new MutableValueFloat();
+
+ @Override
+ public MutableValue getValue() {
+ return mval;
+ }
+
+ @Override
+ public void fillValue(int doc) {
+ try {
+ if (noMatches) {
+ mval.value = defVal;
+ mval.exists = false;
+ return;
+ }
+ scorer = weight.scorer(readerContext, ScorerContext.def());
+ scorerDoc = -1;
+ if (scorer==null) {
+ noMatches = true;
+ mval.value = defVal;
+ mval.exists = false;
+ return;
+ }
+ lastDocRequested = doc;
+
+ if (scorerDoc < doc) {
+ scorerDoc = scorer.advance(doc);
+ }
+
+ if (scorerDoc > doc) {
+ // query doesn't match this document... either because we hit the
+ // end, or because the next doc is after this doc.
+ mval.value = defVal;
+ mval.exists = false;
+ return;
+ }
+
+ // a match!
+ mval.value = scorer.score();
+ mval.exists = true;
+ return;
+ } catch (IOException e) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "caught exception in QueryDocVals("+q+") doc="+doc, e);
+ }
+ }
+ };
}
+
@Override
public String toString(int doc) {
return "query(" + q + ",def=" + defVal + ")=" + floatVal(doc);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java Mon May 2 13:50:57 2011
@@ -54,29 +54,13 @@ public class RangeMapFloatFunction exten
@Override
public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final DocValues vals = source.getValues(context, readerContext);
- return new DocValues() {
+ return new FloatDocValues(this) {
@Override
public float floatVal(int doc) {
float val = vals.floatVal(doc);
return (val>=min && val<=max) ? target : (defaultVal == null ? val : defaultVal);
}
@Override
- public int intVal(int doc) {
- return (int)floatVal(doc);
- }
- @Override
- public long longVal(int doc) {
- return (long)floatVal(doc);
- }
- @Override
- public double doubleVal(int doc) {
- return (double)floatVal(doc);
- }
- @Override
- public String strVal(int doc) {
- return Float.toString(floatVal(doc));
- }
- @Override
public String toString(int doc) {
return "map(" + vals.toString(doc) + ",min=" + min + ",max=" + max + ",target=" + target + ")";
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java Mon May 2 13:50:57 2011
@@ -60,28 +60,12 @@ public class ReciprocalFloatFunction ext
@Override
public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final DocValues vals = source.getValues(context, readerContext);
- return new DocValues() {
+ return new FloatDocValues(this) {
@Override
public float floatVal(int doc) {
return a/(m*vals.floatVal(doc) + b);
}
@Override
- public int intVal(int doc) {
- return (int)floatVal(doc);
- }
- @Override
- public long longVal(int doc) {
- return (long)floatVal(doc);
- }
- @Override
- public double doubleVal(int doc) {
- return (double)floatVal(doc);
- }
- @Override
- public String strVal(int doc) {
- return Float.toString(floatVal(doc));
- }
- @Override
public String toString(int doc) {
return Float.toString(a) + "/("
+ m + "*float(" + vals.toString(doc) + ')'
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java Mon May 2 13:50:57 2011
@@ -66,47 +66,11 @@ public class ReverseOrdFieldSource exten
final FieldCache.DocTermsIndex sindex = FieldCache.DEFAULT.getTermsIndex(topReader, field);
final int end = sindex.numOrd();
- return new DocValues() {
- @Override
- public float floatVal(int doc) {
- return (float)(end - sindex.getOrd(doc+off));
- }
-
- @Override
+ return new IntDocValues(this) {
+ @Override
public int intVal(int doc) {
return (end - sindex.getOrd(doc+off));
}
-
- @Override
- public long longVal(int doc) {
- return (long)(end - sindex.getOrd(doc+off));
- }
-
- @Override
- public int ordVal(int doc) {
- return (end - sindex.getOrd(doc+off));
- }
-
- @Override
- public int numOrd() {
- return end;
- }
-
- @Override
- public double doubleVal(int doc) {
- return (double)(end - sindex.getOrd(doc+off));
- }
-
- @Override
- public String strVal(int doc) {
- // the string value of the ordinal, not the string itself
- return Integer.toString((end - sindex.getOrd(doc+off)));
- }
-
- @Override
- public String toString(int doc) {
- return description() + '=' + strVal(doc);
- }
};
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java Mon May 2 13:50:57 2011
@@ -108,28 +108,12 @@ public class ScaleFloatFunction extends
final DocValues vals = source.getValues(context, readerContext);
- return new DocValues() {
+ return new FloatDocValues(this) {
@Override
public float floatVal(int doc) {
return (vals.floatVal(doc) - minSource) * scale + min;
}
@Override
- public int intVal(int doc) {
- return (int)floatVal(doc);
- }
- @Override
- public long longVal(int doc) {
- return (long)floatVal(doc);
- }
- @Override
- public double doubleVal(int doc) {
- return (double)floatVal(doc);
- }
- @Override
- public String strVal(int doc) {
- return Float.toString(floatVal(doc));
- }
- @Override
public String toString(int doc) {
return "scale(" + vals.toString(doc) + ",toMin=" + min + ",toMax=" + max
+ ",fromMin=" + minSource
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java Mon May 2 13:50:57 2011
@@ -34,28 +34,12 @@ import java.util.Map;
@Override
public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final DocValues vals = source.getValues(context, readerContext);
- return new DocValues() {
+ return new FloatDocValues(this) {
@Override
public float floatVal(int doc) {
return func(doc, vals);
}
@Override
- public int intVal(int doc) {
- return (int)floatVal(doc);
- }
- @Override
- public long longVal(int doc) {
- return (long)floatVal(doc);
- }
- @Override
- public double doubleVal(int doc) {
- return (double)floatVal(doc);
- }
- @Override
- public String strVal(int doc) {
- return Float.toString(floatVal(doc));
- }
- @Override
public String toString(int doc) {
return name() + '(' + vals.toString(doc) + ')';
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java Mon May 2 13:50:57 2011
@@ -21,8 +21,10 @@ import org.apache.lucene.search.FieldCac
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
+import org.apache.noggit.CharArr;
import org.apache.solr.search.MutableValue;
import org.apache.solr.search.MutableValueStr;
+import org.apache.solr.util.ByteUtils;
import java.io.IOException;
@@ -30,64 +32,97 @@ import java.io.IOException;
* Serves as base class for DocValues based on StringIndex
**/
public abstract class StringIndexDocValues extends DocValues {
- protected final FieldCache.DocTermsIndex termsIndex;
- protected final ValueSource vs;
- protected final MutableValueStr val = new MutableValueStr();
-
- public StringIndexDocValues(ValueSource vs, AtomicReaderContext context, String field) throws IOException {
- try {
- termsIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, field);
- } catch (RuntimeException e) {
- throw new StringIndexException(field, e);
- }
- this.vs = vs;
+ protected final FieldCache.DocTermsIndex termsIndex;
+ protected final ValueSource vs;
+ protected final MutableValueStr val = new MutableValueStr();
+ protected final BytesRef spare = new BytesRef();
+ protected final CharArr spareChars = new CharArr();
+
+ public StringIndexDocValues(ValueSource vs, AtomicReaderContext context, String field) throws IOException {
+ try {
+ termsIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, field);
+ } catch (RuntimeException e) {
+ throw new StringIndexException(field, e);
}
+ this.vs = vs;
+ }
+
+ public FieldCache.DocTermsIndex getDocTermsIndex() {
+ return termsIndex;
+ }
+
+ protected abstract String toTerm(String readableValue);
+
+ @Override
+ public boolean exists(int doc) {
+ return termsIndex.getOrd(doc) != 0;
+ }
+
- public FieldCache.DocTermsIndex getDocTermsIndex() {
- return termsIndex;
+ @Override
+ public boolean bytesVal(int doc, BytesRef target) {
+ int ord=termsIndex.getOrd(doc);
+ if (ord==0) {
+ target.length = 0;
+ return false;
}
-
- protected abstract String toTerm(String readableValue);
+ termsIndex.lookup(ord, target);
+ return true;
+ }
+
+ @Override
+ public String strVal(int doc) {
+ int ord=termsIndex.getOrd(doc);
+ if (ord==0) return null;
+ termsIndex.lookup(ord, spare);
+ spareChars.reset();
+ ByteUtils.UTF8toUTF16(spare, spareChars);
+ return spareChars.toString();
+ }
- @Override
- public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
- // TODO: are lowerVal and upperVal in indexed form or not?
- lowerVal = lowerVal == null ? null : toTerm(lowerVal);
- upperVal = upperVal == null ? null : toTerm(upperVal);
-
- final BytesRef spare = new BytesRef();
-
- int lower = Integer.MIN_VALUE;
- if (lowerVal != null) {
- lower = termsIndex.binarySearchLookup(new BytesRef(lowerVal), spare);
- if (lower < 0) {
- lower = -lower-1;
- } else if (!includeLower) {
- lower++;
- }
+
+ @Override
+ public abstract Object objectVal(int doc); // force subclasses to override
+
+ @Override
+ public ValueSourceScorer getRangeScorer(IndexReader reader, String lowerVal, String upperVal, boolean includeLower, boolean includeUpper) {
+ // TODO: are lowerVal and upperVal in indexed form or not?
+ lowerVal = lowerVal == null ? null : toTerm(lowerVal);
+ upperVal = upperVal == null ? null : toTerm(upperVal);
+
+ final BytesRef spare = new BytesRef();
+
+ int lower = Integer.MIN_VALUE;
+ if (lowerVal != null) {
+ lower = termsIndex.binarySearchLookup(new BytesRef(lowerVal), spare);
+ if (lower < 0) {
+ lower = -lower-1;
+ } else if (!includeLower) {
+ lower++;
}
-
- int upper = Integer.MAX_VALUE;
- if (upperVal != null) {
- upper = termsIndex.binarySearchLookup(new BytesRef(upperVal), spare);
- if (upper < 0) {
- upper = -upper-2;
- } else if (!includeUpper) {
- upper--;
- }
+ }
+
+ int upper = Integer.MAX_VALUE;
+ if (upperVal != null) {
+ upper = termsIndex.binarySearchLookup(new BytesRef(upperVal), spare);
+ if (upper < 0) {
+ upper = -upper-2;
+ } else if (!includeUpper) {
+ upper--;
}
+ }
- final int ll = lower;
- final int uu = upper;
+ final int ll = lower;
+ final int uu = upper;
- return new ValueSourceScorer(reader, this) {
- @Override
- public boolean matchesValue(int doc) {
- int ord = termsIndex.getOrd(doc);
- return ord >= ll && ord <= uu;
- }
- };
- }
+ return new ValueSourceScorer(reader, this) {
+ @Override
+ public boolean matchesValue(int doc) {
+ int ord = termsIndex.getOrd(doc);
+ return ord >= ll && ord <= uu;
+ }
+ };
+ }
@Override
public String toString(int doc) {
@@ -117,7 +152,7 @@ public abstract class StringIndexDocValu
public StringIndexException(final String fieldName,
final RuntimeException cause) {
super("Can't initialize StringIndex to generate (function) " +
- "DocValues for field: " + fieldName, cause);
+ "DocValues for field: " + fieldName, cause);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java Mon May 2 13:50:57 2011
@@ -18,6 +18,7 @@ package org.apache.solr.search.function.
import org.apache.lucene.spatial.DistanceUtils;
+import org.apache.solr.search.function.DoubleDocValues;
import org.apache.solr.search.function.ValueSource;
import org.apache.solr.search.function.DocValues;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
@@ -58,32 +59,11 @@ public class GeohashHaversineFunction ex
final DocValues gh1DV = geoHash1.getValues(context, readerContext);
final DocValues gh2DV = geoHash2.getValues(context, readerContext);
- return new DocValues() {
- @Override
- public float floatVal(int doc) {
- return (float) doubleVal(doc);
- }
-
- @Override
- public int intVal(int doc) {
- return (int) doubleVal(doc);
- }
-
- @Override
- public long longVal(int doc) {
- return (long) doubleVal(doc);
- }
-
+ return new DoubleDocValues(this) {
@Override
public double doubleVal(int doc) {
return distance(doc, gh1DV, gh2DV);
}
-
- @Override
- public String strVal(int doc) {
- return Double.toString(doubleVal(doc));
- }
-
@Override
public String toString(int doc) {
StringBuilder sb = new StringBuilder();
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java Mon May 2 13:50:57 2011
@@ -198,22 +198,7 @@ public class HaversineConstFunction exte
final double lonCenterRad = this.lonCenter * DistanceUtils.DEGREES_TO_RADIANS;
final double latCenterRad_cos = this.latCenterRad_cos;
- return new DocValues() {
- @Override
- public float floatVal(int doc) {
- return (float) doubleVal(doc);
- }
-
- @Override
- public int intVal(int doc) {
- return (int) doubleVal(doc);
- }
-
- @Override
- public long longVal(int doc) {
- return (long) doubleVal(doc);
- }
-
+ return new DoubleDocValues(this) {
@Override
public double doubleVal(int doc) {
double latRad = latVals.doubleVal(doc) * DistanceUtils.DEGREES_TO_RADIANS;
@@ -226,12 +211,6 @@ public class HaversineConstFunction exte
(latCenterRad_cos * Math.cos(latRad) * hsinY * hsinY);
return (EARTH_MEAN_DIAMETER * Math.atan2(Math.sqrt(h), Math.sqrt(1 - h)));
}
-
- @Override
- public String strVal(int doc) {
- return Double.toString(doubleVal(doc));
- }
-
@Override
public String toString(int doc) {
return name() + '(' + latVals.toString(doc) + ',' + lonVals.toString(doc) + ',' + latCenter + ',' + lonCenter + ')';
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/HaversineFunction.java Mon May 2 13:50:57 2011
@@ -20,6 +20,7 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.spatial.DistanceUtils;
import org.apache.solr.common.SolrException;
+import org.apache.solr.search.function.DoubleDocValues;
import org.apache.solr.search.function.MultiValueSource;
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.ValueSource;
@@ -99,32 +100,11 @@ public class HaversineFunction extends V
final DocValues vals1 = p1.getValues(context, readerContext);
final DocValues vals2 = p2.getValues(context, readerContext);
- return new DocValues() {
- @Override
- public float floatVal(int doc) {
- return (float) doubleVal(doc);
- }
-
- @Override
- public int intVal(int doc) {
- return (int) doubleVal(doc);
- }
-
- @Override
- public long longVal(int doc) {
- return (long) doubleVal(doc);
- }
-
+ return new DoubleDocValues(this) {
@Override
public double doubleVal(int doc) {
return distance(doc, vals1, vals2);
}
-
- @Override
- public String strVal(int doc) {
- return Double.toString(doubleVal(doc));
- }
-
@Override
public String toString(int doc) {
StringBuilder sb = new StringBuilder();
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/StringDistanceFunction.java Mon May 2 13:50:57 2011
@@ -20,6 +20,7 @@ package org.apache.solr.search.function.
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.spell.StringDistance;
import org.apache.solr.search.function.DocValues;
+import org.apache.solr.search.function.FloatDocValues;
import org.apache.solr.search.function.ValueSource;
import java.io.IOException;
@@ -51,7 +52,7 @@ public class StringDistanceFunction exte
public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final DocValues str1DV = str1.getValues(context, readerContext);
final DocValues str2DV = str2.getValues(context, readerContext);
- return new DocValues() {
+ return new FloatDocValues(this) {
@Override
public float floatVal(int doc) {
@@ -59,21 +60,6 @@ public class StringDistanceFunction exte
}
@Override
- public int intVal(int doc) {
- return (int) doubleVal(doc);
- }
-
- @Override
- public long longVal(int doc) {
- return (long) doubleVal(doc);
- }
-
- @Override
- public double doubleVal(int doc) {
- return (double) floatVal(doc);
- }
-
- @Override
public String toString(int doc) {
StringBuilder sb = new StringBuilder();
sb.append("strdist").append('(');
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/distance/VectorDistanceFunction.java Mon May 2 13:50:57 2011
@@ -21,6 +21,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.spatial.DistanceUtils;
import org.apache.solr.common.SolrException;
import org.apache.solr.search.function.DocValues;
+import org.apache.solr.search.function.DoubleDocValues;
import org.apache.solr.search.function.MultiValueSource;
import org.apache.solr.search.function.ValueSource;
@@ -85,31 +86,7 @@ public class VectorDistanceFunction exte
final DocValues vals2 = source2.getValues(context, readerContext);
- return new DocValues() {
- @Override
- public byte byteVal(int doc) {
- return (byte) doubleVal(doc);
- }
-
- @Override
- public short shortVal(int doc) {
- return (short) doubleVal(doc);
- }
-
- @Override
- public float floatVal(int doc) {
- return (float) doubleVal(doc);
- }
-
- @Override
- public int intVal(int doc) {
- return (int) doubleVal(doc);
- }
-
- @Override
- public long longVal(int doc) {
- return (long) doubleVal(doc);
- }
+ return new DoubleDocValues(this) {
@Override
public double doubleVal(int doc) {
@@ -117,11 +94,6 @@ public class VectorDistanceFunction exte
}
@Override
- public String strVal(int doc) {
- return Double.toString(doubleVal(doc));
- }
-
- @Override
public String toString(int doc) {
StringBuilder sb = new StringBuilder();
sb.append(name()).append('(').append(power).append(',');
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/spelling/suggest/Lookup.java Mon May 2 13:50:57 2011
@@ -12,13 +12,12 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.util.TermFreqIterator;
public abstract class Lookup {
-
/**
* Result of a lookup.
*/
public static final class LookupResult implements Comparable<LookupResult> {
- String key;
- float value;
+ public final String key;
+ public final float value;
public LookupResult(String key, float value) {
this.key = key;
Modified: lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/index.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/index.xml?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/index.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/index.xml Mon May 2 13:50:57 2011
@@ -68,27 +68,32 @@ customization is required.
<title>News</title>
<section>
<title>March 2011 - Solr 3.1 Released</title>
+ <p>The Lucene PMC is pleased to announce the release of <a href="http://www.apache.org/dyn/closer.cgi/lucene/solr">Apache Solr 3.1</a>!
+ </p>
<p>
- Solr 3.1 has been released and is now available for public <a href="http://www.apache.org/dyn/closer.cgi/lucene/solr/">download</a>!
-
- New Solr 3.1 features include
+ Solr's version number was synced with Lucene following the Lucene/Solr merge, so Solr 3.1 contains Lucene 3.1.
+ Solr 3.1 is the first release after Solr 1.4.1.
+ </p>
+ <p>
+ Solr 3.1 release highlights include
</p>
<ul>
- <li>Improved geospatial support</li>
- <li>Sorting by function queries</li>
- <li>Range faceting on all numeric fields</li>
- <li>Example Velocity driven search UI at http://localhost:8983/solr/browse</li>
- <li>A new termvector-based highlighter</li>
- <li>Improved spellchecking capabilities</li>
- <li>Improved integration with Apache Lucene</li>
- <li>New autosuggest component</li>
- <li>Distributed support for more components</li>
- <li>JSON document indexing and CSV response format</li>
- <li>Apache UIMA integration for metadata extraction</li>
- <li>Many other Bugfixes, improvements and optimizations</li>
+ <li><a href="http://wiki.apache.org/solr/SimpleFacetParameters#Facet_by_Range">Numeric range facets</a> (similar to date faceting).</li>
+ <li>New <a href="http://wiki.apache.org/solr/SpatialSearch">spatial search</a>, including spatial filtering, boosting and sorting capabilities.</li>
+ <li>Example Velocity driven search UI at <a href="http://localhost:8983/solr/browse">http://localhost:8983/solr/browse</a></li>
+ <li>A new faster <a href="http://wiki.apache.org/solr/HighlightingParameters">termvector-based highlighter</a>.</li>
+ <li>Extended dismax (edismax) query parser with support for fielded queries, enhanced relevancy, and full lucene syntax support.</li>
+ <li>Distributed search support for the <a href="http://wiki.apache.org/solr/SpellCheckComponent">Spell check</a>
+ and <a href="http://wiki.apache.org/solr/TermsComponent">Terms</a> components.</li>
+ <li><a href="http://wiki.apache.org/solr/Suggester">Suggester</a>, a fast trie-based autocomplete component.</li>
+ <li>Sort results by any <a href="http://wiki.apache.org/solr/FunctionQuery#Sort_By_Function any function">function query</a>.</li>
+ <li><a href="http://wiki.apache.org/solr/UpdateJSON">JSON document indexing</a>.</li>
+ <li><a href="http://wiki.apache.org/solr/CSVResponseWriter">CSV response format</a></li>
+ <li><a href="http://wiki.apache.org/solr/SolrUIMA">Apache UIMA integration</a> for metadata extraction.</li>
+ <li>Tons of optimizations, bugfixes, and new analysis capabilities via <a href="http://lucene.apache.org/java/docs/index.html">Apache Lucene 3.1</a>.</li>
</ul>
- <p>See the <a href="http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_1/solr/CHANGES.txt">release notes</a> for more details.
+ <p>See the <a href="http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_1/solr/CHANGES.txt">release notes</a> for a more complete list of all the new features, improvements, and bugfixes.
</p>
</section>
Modified: lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/site.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/site.xml?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/site.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/site/src/documentation/content/xdocs/site.xml Mon May 2 13:50:57 2011
@@ -42,12 +42,13 @@ See http://forrest.apache.org/docs/linki
</about>
<docs label="Documentation">
- <features label="Features" href="features.html" />
- <tutorial label="Tutorial" href="tutorial.html" />
- <wiki label="Docs (Wiki)" href="ext:wiki" />
- <faq label="FAQ" href="ext:faq" />
- <apidocs label="All Javadoc" href="api/index.html" />
- <apidocs label="SolrJ Javadoc" href="api/solrj/index.html" />
+ <features label="Features" href="features.html" />
+ <tutorial label="Tutorial" href="tutorial.html" />
+ <wiki label="Docs (Wiki)" href="ext:wiki" />
+ <faq label="FAQ" href="ext:faq" />
+ <apidocs label="All Javadoc" href="api/index.html" />
+ <apidocs label="SolrJ Javadoc" href="api/solrj/index.html" />
+ <apidocs label="Test Framework Javadoc" href="api/test-framework/index.html" />
</docs>
<resources label="Resources">
Modified: lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java (original)
+++ lucene/dev/branches/docvalues/solr/src/solrj/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.java Mon May 2 13:50:57 2011
@@ -26,15 +26,7 @@ import java.util.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpConnectionManager;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.HttpMethodBase;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.NoHttpResponseException;
+import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
@@ -43,6 +35,7 @@ import org.apache.commons.httpclient.met
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.PartBase;
import org.apache.commons.httpclient.methods.multipart.StringPart;
+import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.io.IOUtils;
import org.apache.solr.client.solrj.ResponseParser;
import org.apache.solr.client.solrj.SolrRequest;
@@ -205,15 +198,21 @@ public class CommonsHttpSolrServer exten
if( _baseURL.indexOf( '?' ) >=0 ) {
throw new RuntimeException( "Invalid base url for solrj. The base URL must not contain parameters: "+_baseURL );
}
-
- _httpClient = (client == null) ? new HttpClient(new MultiThreadedHttpConnectionManager()) : client;
if (client == null) {
+ _httpClient = new HttpClient(new MultiThreadedHttpConnectionManager()) ;
+
+ // prevent retries (note: this didn't work when set on mgr.. needed to be set on client)
+ DefaultHttpMethodRetryHandler retryhandler = new DefaultHttpMethodRetryHandler(0, false);
+ _httpClient.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, retryhandler);
+
// set some better defaults if we created a new connection manager and client
-
+
// increase the default connections
this.setDefaultMaxConnectionsPerHost( 32 ); // 2
this.setMaxTotalConnections( 128 ); // 20
+ } else {
+ _httpClient = client;
}
_parser = parser;
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/schema.xml Mon May 2 13:50:57 2011
@@ -391,6 +391,32 @@
<fieldType name="latLon" class="solr.LatLonType" subFieldType="double"/>
+ <!-- some per-field similarity examples -->
+
+ <!-- specify a Similarity classname directly -->
+ <fieldType name="sim1" class="solr.TextField">
+ <analyzer>
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+ </analyzer>
+ <similarity class="org.apache.lucene.misc.SweetSpotSimilarity"/>
+ </fieldType>
+
+ <!-- specify a Similarity factory -->
+ <fieldType name="sim2" class="solr.TextField">
+ <analyzer>
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+ </analyzer>
+ <similarity class="org.apache.solr.schema.CustomSimilarityFactory">
+ <str name="echo">is there an echo?</str>
+ </similarity>
+ </fieldType>
+
+ <!-- don't specify any sim at all: get the default -->
+ <fieldType name="sim3" class="solr.TextField">
+ <analyzer>
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+ </analyzer>
+ </fieldType>
</types>
@@ -496,6 +522,9 @@
<field name="multiDefault" type="string" indexed="true" stored="true" default="muLti-Default" multiValued="true"/>
<field name="intDefault" type="int" indexed="true" stored="true" default="42" multiValued="false"/>
+ <field name="sim1text" type="sim1" indexed="true" stored="true"/>
+ <field name="sim2text" type="sim2" indexed="true" stored="true"/>
+ <field name="sim3text" type="sim3" indexed="true" stored="true"/>
<field name="tlong" type="tlong" indexed="true" stored="true" />
@@ -574,6 +603,10 @@
<dynamicField name="*_mfacet" type="string" indexed="true" stored="false" multiValued="true" />
+ <!-- make sure custom sims work with dynamic fields -->
+ <dynamicField name="*_sim1" type="sim1" indexed="true" stored="true"/>
+ <dynamicField name="*_sim2" type="sim2" indexed="true" stored="true"/>
+ <dynamicField name="*_sim3" type="sim3" indexed="true" stored="true"/>
</fields>
<defaultSearchField>text</defaultSearchField>
@@ -607,12 +640,18 @@
<!-- dynamic destination -->
<copyField source="*_dynamic" dest="dynamic_*"/>
- <!-- Similarity is the scoring routine for each document vs a query.
- A custom similarity may be specified here, but the default is fine
+ <!-- expert: SimilarityProvider contains scoring routines that are not field-specific,
+ such as coord() and queryNorm(). most scoring customization happens in the fieldtype.
+ A custom similarity provider may be specified here, but the default is fine
for most applications.
-->
- <similarity class="org.apache.solr.schema.CustomSimilarityFactory">
+ <similarityProvider class="org.apache.solr.schema.CustomSimilarityProviderFactory">
<str name="echo">is there an echo?</str>
- </similarity>
+ </similarityProvider>
+ <!-- default similarity, unless otherwise specified by the fieldType
+ -->
+ <similarity class="org.apache.solr.schema.CustomSimilarityFactory">
+ <str name="echo">I am your default sim</str>
+ </similarity>
</schema>
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/solrconfig-spellchecker.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/solrconfig-spellchecker.xml?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/solrconfig-spellchecker.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/conf/solrconfig-spellchecker.xml Mon May 2 13:50:57 2011
@@ -31,7 +31,7 @@
<requestHandler name="standard" class="solr.StandardRequestHandler" />
<!-- Suggest component -->
- <searchComponent class="solr.SpellCheckComponent" name="suggest">
+ <searchComponent class="solr.SpellCheckComponent" name="suggest_jaspell">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
@@ -45,6 +45,38 @@
</lst>
</searchComponent>
+ <!-- TSTLookup suggest component -->
+ <searchComponent class="solr.SpellCheckComponent" name="suggest_tst">
+ <lst name="spellchecker">
+ <str name="name">suggest_tst</str>
+ <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
+ <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
+ <str name="field">suggest</str>
+ <str name="storeDir">suggest_tst</str>
+ <str name="buildOnCommit">true</str>
+
+ <!-- Suggester properties -->
+ <float name="threshold">0.0</float>
+ </lst>
+ </searchComponent>
+
+ <!-- FSTLookup suggest component -->
+ <searchComponent class="solr.SpellCheckComponent" name="suggest_fst">
+ <lst name="spellchecker">
+ <str name="name">suggest_fst</str>
+ <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
+ <str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookup</str>
+ <str name="field">suggest</str>
+ <str name="storeDir">suggest_fst</str>
+ <str name="buildOnCommit">true</str>
+
+ <!-- Suggester properties -->
+ <int name="weightBuckets">5</int>
+ <bool name="exactMatchFirst">true</bool>
+ </lst>
+ </searchComponent>
+
+ <!-- The default (jaspell) -->
<requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
@@ -52,8 +84,32 @@
<str name="spellcheck.collate">true</str>
</lst>
<arr name="components">
- <str>suggest</str>
+ <str>suggest_jaspell</str>
</arr>
</requestHandler>
+ <!-- tst (ternary tree based) -->
+ <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest_tst">
+ <lst name="defaults">
+ <str name="spellcheck">true</str>
+ <str name="spellcheck.dictionary">suggest_tst</str>
+ <str name="spellcheck.collate">true</str>
+ </lst>
+ <arr name="components">
+ <str>suggest_tst</str>
+ </arr>
+ </requestHandler>
+
+ <!-- fst (finite state automaton based) -->
+ <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest_fst">
+ <lst name="defaults">
+ <str name="spellcheck">true</str>
+ <str name="spellcheck.dictionary">suggest_fst</str>
+ <str name="spellcheck.collate">false</str>
+ </lst>
+ <arr name="components">
+ <str>suggest_fst</str>
+ </arr>
+ </requestHandler>
+
</config>
Modified: lucene/dev/branches/docvalues/solr/src/test-files/solr/shared/solr.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test-files/solr/shared/solr.xml?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test-files/solr/shared/solr.xml (original)
+++ lucene/dev/branches/docvalues/solr/src/test-files/solr/shared/solr.xml Mon May 2 13:50:57 2011
@@ -30,7 +30,7 @@
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via REST
-->
- <cores adminPath="/admin/cores" defaultCoreName="core0">
+ <cores adminPath="/admin/cores" defaultCoreName="core0" host="127.0.0.1" hostPort="${hostPort:8983}" hostContext="solr" zkClientTimeout="8000">
<core name="core0" instanceDir="./">
<property name="version" value="3.5"/>
<property name="l10n" value="EN"/>
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/TestDistributedSearch.java Mon May 2 13:50:57 2011
@@ -40,7 +40,8 @@ public class TestDistributedSearch exten
String nlong = "n_l";
String tlong = "other_tl1";
String ndate = "n_dt";
- String tdate = "n_tdt";
+ String tdate_a = "a_n_tdt";
+ String tdate_b = "b_n_tdt";
String oddField="oddField_s";
String missingField="ignore_exception__missing_but_valid_field_t";
@@ -48,25 +49,40 @@ public class TestDistributedSearch exten
@Override
public void doTest() throws Exception {
+ int backupStress = stress; // make a copy so we can restore
+
+
del("*:*");
- indexr(id,1, i1, 100, tlong, 100,t1,"now is the time for all good men"
- ,"foo_f", 1.414f, "foo_b", "true", "foo_d", 1.414d);
- indexr(id,2, i1, 50 , tlong, 50,t1,"to come to the aid of their country."
- );
- indexr(id,3, i1, 2, tlong, 2,t1,"how now brown cow"
- );
- indexr(id,4, i1, -100 ,tlong, 101,t1,"the quick fox jumped over the lazy dog"
- );
- indexr(id,5, i1, 500, tlong, 500 ,t1,"the quick fox jumped way over the lazy dog"
- );
+ indexr(id,1, i1, 100, tlong, 100,t1,"now is the time for all good men",
+ tdate_a, "2010-04-20T11:00:00Z",
+ tdate_b, "2009-08-20T11:00:00Z",
+ "foo_f", 1.414f, "foo_b", "true", "foo_d", 1.414d);
+ indexr(id,2, i1, 50 , tlong, 50,t1,"to come to the aid of their country.",
+ tdate_a, "2010-05-02T11:00:00Z",
+ tdate_b, "2009-11-02T11:00:00Z");
+ indexr(id,3, i1, 2, tlong, 2,t1,"how now brown cow",
+ tdate_a, "2010-05-03T11:00:00Z");
+ indexr(id,4, i1, -100 ,tlong, 101,
+ t1,"the quick fox jumped over the lazy dog",
+ tdate_a, "2010-05-03T11:00:00Z",
+ tdate_b, "2010-05-03T11:00:00Z");
+ indexr(id,5, i1, 500, tlong, 500 ,
+ t1,"the quick fox jumped way over the lazy dog",
+ tdate_a, "2010-05-05T11:00:00Z");
indexr(id,6, i1, -600, tlong, 600 ,t1,"humpty dumpy sat on a wall");
indexr(id,7, i1, 123, tlong, 123 ,t1,"humpty dumpy had a great fall");
- indexr(id,8, i1, 876, tlong, 876,t1,"all the kings horses and all the kings men");
+ indexr(id,8, i1, 876, tlong, 876,
+ tdate_b, "2010-01-05T11:00:00Z",
+ t1,"all the kings horses and all the kings men");
indexr(id,9, i1, 7, tlong, 7,t1,"couldn't put humpty together again");
indexr(id,10, i1, 4321, tlong, 4321,t1,"this too shall pass");
- indexr(id,11, i1, -987, tlong, 987,t1,"An eye for eye only ends up making the whole world blind.");
- indexr(id,12, i1, 379, tlong, 379,t1,"Great works are performed, not by strength, but by perseverance.");
- indexr(id,13, i1, 232, tlong, 232,t1,"no eggs on wall, lesson learned", oddField, "odd man out");
+ indexr(id,11, i1, -987, tlong, 987,
+ t1,"An eye for eye only ends up making the whole world blind.");
+ indexr(id,12, i1, 379, tlong, 379,
+ t1,"Great works are performed, not by strength, but by perseverance.");
+ indexr(id,13, i1, 232, tlong, 232,
+ t1,"no eggs on wall, lesson learned",
+ oddField, "odd man out");
indexr(id, 14, "SubjectTerms_mfacet", new String[] {"mathematical models", "mathematical analysis"});
indexr(id, 15, "SubjectTerms_mfacet", new String[] {"test 1", "test 2", "test3"});
@@ -132,23 +148,73 @@ public class TestDistributedSearch exten
// then the primary sort should always be a tie and then the secondary should always decide
query("q","{!func}ms(NOW)", "sort","score desc,"+i1+" desc","fl","id");
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1);
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.limit",-1, "facet.sort","count");
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.limit",-1, "facet.sort","count", "facet.mincount",2);
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.limit",-1, "facet.sort","index");
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.limit",-1, "facet.sort","index", "facet.mincount",2);
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.offset",10, "facet.limit",1, "facet.sort","index");
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1,"facet.limit",1);
- query("q","*:*", "rows",100, "facet","true", "facet.query","quick", "facet.query","all", "facet.query","*:*");
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.offset",1);
- query("q","*:*", "rows",100, "facet","true", "facet.field",t1, "facet.mincount",2);
+ query("q","*:*", "rows",0, "facet","true", "facet.field",t1);
+ query("q","*:*", "rows",0, "facet","true", "facet.field",t1,"facet.limit",1);
+ query("q","*:*", "rows",0, "facet","true", "facet.query","quick", "facet.query","all", "facet.query","*:*");
+ query("q","*:*", "rows",0, "facet","true", "facet.field",t1, "facet.mincount",2);
+
+ // simple date facet on one field
+ query("q","*:*", "rows",100, "facet","true",
+ "facet.date",tdate_a,
+ "facet.date.other", "all",
+ "facet.date.start","2010-05-01T11:00:00Z",
+ "facet.date.gap","+1DAY",
+ "facet.date.end","2010-05-20T11:00:00Z");
+
+ // date facet on multiple fields
+ query("q","*:*", "rows",100, "facet","true",
+ "facet.date",tdate_a,
+ "facet.date",tdate_b,
+ "facet.date.other", "all",
+ "f."+tdate_b+".facet.date.start","2009-05-01T11:00:00Z",
+ "f."+tdate_b+".facet.date.gap","+3MONTHS",
+ "facet.date.start","2010-05-01T11:00:00Z",
+ "facet.date.gap","+1DAY",
+ "facet.date.end","2010-05-20T11:00:00Z");
+
+ // simple range facet on one field
+ query("q","*:*", "rows",100, "facet","true",
+ "facet.range",tlong,
+ "facet.range.start",200,
+ "facet.range.gap",100,
+ "facet.range.end",900);
+
+ // range facet on multiple fields
+ query("q","*:*", "rows",100, "facet","true",
+ "facet.range",tlong,
+ "facet.range",i1,
+ "f."+i1+".facet.range.start",300,
+ "f."+i1+".facet.range.gap",87,
+ "facet.range.end",900,
+ "facet.range.start",200,
+ "facet.range.gap",100,
+ "f."+tlong+".facet.range.end",900);
+
+ stress=0; // turn off stress... we want to tex max combos in min time
+ for (int i=0; i<25*RANDOM_MULTIPLIER; i++) {
+ String f = fieldNames[random.nextInt(fieldNames.length)];
+ if (random.nextBoolean()) f = t1; // the text field is a really interesting one to facet on (and it's multi-valued too)
+
+ // we want a random query and not just *:* so we'll get zero counts in facets also
+ // TODO: do a better random query
+ String q = random.nextBoolean() ? "*:*" : "id:(1 3 5 7 9 11 13) OR id:[100 TO " + random.nextInt(50) + "]";
+
+ int nolimit = random.nextBoolean() ? -1 : 10000; // these should be equivalent
+
+ // if limit==-1, we should always get exact matches
+ query("q",q, "rows",0, "facet","true", "facet.field",f, "facet.limit",nolimit, "facet.sort","count", "facet.mincount",random.nextInt(5), "facet.offset",random.nextInt(10));
+ query("q",q, "rows",0, "facet","true", "facet.field",f, "facet.limit",nolimit, "facet.sort","index", "facet.mincount",random.nextInt(5), "facet.offset",random.nextInt(10));
+ // for index sort, we should get exact results for mincount <= 1
+ query("q",q, "rows",0, "facet","true", "facet.field",f, "facet.sort","index", "facet.mincount",random.nextInt(2), "facet.offset",random.nextInt(10), "facet.limit",random.nextInt(11)-1);
+ }
+ stress = backupStress; // restore stress
// test faceting multiple things at once
- query("q","*:*", "rows",100, "facet","true", "facet.query","quick", "facet.query","all", "facet.query","*:*"
+ query("q","*:*", "rows",0, "facet","true", "facet.query","quick", "facet.query","all", "facet.query","*:*"
,"facet.field",t1);
// test filter tagging, facet exclusion, and naming (multi-select facet support)
- query("q","*:*", "rows",100, "facet","true", "facet.query","{!key=myquick}quick", "facet.query","{!key=myall ex=a}all", "facet.query","*:*"
+ query("q","*:*", "rows",0, "facet","true", "facet.query","{!key=myquick}quick", "facet.query","{!key=myall ex=a}all", "facet.query","*:*"
,"facet.field","{!key=mykey ex=a}"+t1
,"facet.field","{!key=other ex=b}"+t1
,"facet.field","{!key=again ex=a,b}"+t1
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MergeIndexesExampleTestBase.java Mon May 2 13:50:57 2011
@@ -24,6 +24,7 @@ import org.apache.solr.client.solrj.requ
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.util.ExternalPaths;
/**
* Abstract base class for testing merge indexes command
@@ -37,7 +38,7 @@ public abstract class MergeIndexesExampl
@Override
public String getSolrHome() {
- return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME;
+ return ExternalPaths.EXAMPLE_MULTICORE_HOME;
}
@Override
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/MultiCoreExampleTestBase.java Mon May 2 13:50:57 2011
@@ -25,6 +25,8 @@ import org.apache.solr.client.solrj.resp
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
+import org.apache.solr.util.ExternalPaths;
+import org.junit.Test;
/**
@@ -36,7 +38,7 @@ public abstract class MultiCoreExampleTe
// protected static final CoreContainer cores = new CoreContainer();
protected static CoreContainer cores;
- @Override public String getSolrHome() { return SolrJettyTestBase.EXAMPLE_MULTICORE_HOME; }
+ @Override public String getSolrHome() { return ExternalPaths.EXAMPLE_MULTICORE_HOME; }
@Override public String getSchemaFile() { return getSolrHome()+"/core0/conf/schema.xml"; }
@Override public String getSolrConfigFile() { return getSolrHome()+"/core0/conf/solrconfig.xml"; }
@@ -64,8 +66,8 @@ public abstract class MultiCoreExampleTe
protected abstract SolrServer getSolrCore1();
protected abstract SolrServer getSolrAdmin();
protected abstract SolrServer getSolrCore(String name);
-
+ @Test
public void testMultiCore() throws Exception
{
UpdateRequest up = new UpdateRequest();
@@ -78,6 +80,8 @@ public abstract class MultiCoreExampleTe
// Add something to each core
SolrInputDocument doc = new SolrInputDocument();
doc.setField( "id", "AAA" );
+ doc.setField( "name", "AAA1" );
+ doc.setField( "type", "BBB1" );
doc.setField( "core0", "yup" );
// Add to core0
@@ -95,6 +99,8 @@ public abstract class MultiCoreExampleTe
// Add to core1
doc.setField( "id", "BBB" );
+ doc.setField( "name", "BBB1" );
+ doc.setField( "type", "AAA1" );
doc.setField( "core1", "yup" );
doc.removeField( "core0" );
up.add( doc );
@@ -123,6 +129,12 @@ public abstract class MultiCoreExampleTe
assertEquals( 0, getSolrCore1().query( new SolrQuery( "id:AAA" ) ).getResults().size() );
assertEquals( 1, getSolrCore1().query( new SolrQuery( "id:BBB" ) ).getResults().size() );
+ // cross-core join
+ assertEquals( 0, getSolrCore0().query( new SolrQuery( "{!join from=type to=name}*:*" ) ).getResults().size() ); // normal join
+ assertEquals( 1, getSolrCore0().query( new SolrQuery( "{!join from=type to=name fromIndex=core1}id:BBB" ) ).getResults().size() );
+ assertEquals( 1, getSolrCore1().query( new SolrQuery( "{!join from=type to=name fromIndex=core0}id:AAA" ) ).getResults().size() );
+
+
// Now test reloading it should have a newer open time
String name = "core0";
SolrServer coreadmin = getSolrAdmin();
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleBinaryTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleBinaryTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleBinaryTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleBinaryTest.java Mon May 2 13:50:57 2011
@@ -22,6 +22,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
import org.apache.solr.client.solrj.impl.BinaryResponseParser;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
@@ -32,7 +33,7 @@ import org.junit.BeforeClass;
public class SolrExampleBinaryTest extends SolrExampleTests {
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
@Override
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrExampleTests.java Mon May 2 13:50:57 2011
@@ -52,6 +52,7 @@ import org.apache.solr.common.util.XML;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.FacetParams;
+import org.junit.Ignore;
import org.junit.Test;
/**
@@ -380,7 +381,7 @@ abstract public class SolrExampleTests e
}
- @Test
+ @Test @Ignore // TODO: re-enable when new transformer syntax is implemented
public void testAugmentFields() throws Exception
{
SolrServer server = getSolrServer();
@@ -405,7 +406,7 @@ abstract public class SolrExampleTests e
SolrQuery query = new SolrQuery();
query.setQuery( "*:*" );
- query.set( CommonParams.FL, "id,price,_docid_,_explain:nl_,score,aaa=_value:aaa_,ten=_value:int:10_" );
+ query.set( CommonParams.FL, "id,price,_docid_,_explain:nl_,score,aaa:_value:aaa_,ten:_value:int:10_" );
query.addSortField( "price", SolrQuery.ORDER.asc );
QueryResponse rsp = server.query( query );
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/SolrJettyTestBase.java Mon May 2 13:50:57 2011
@@ -24,6 +24,7 @@ import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.solr.util.ExternalPaths;
import org.junit.AfterClass;
abstract public class SolrJettyTestBase extends SolrTestCaseJ4
@@ -32,7 +33,7 @@ abstract public class SolrJettyTestBase
// using configs in the test directory allows more flexibility to change "example"
// without breaking configs.
- public String getSolrHome() { return EXAMPLE_HOME; }
+ public String getSolrHome() { return ExternalPaths.EXAMPLE_HOME; }
public static JettySolrRunner jetty;
public static int port;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java Mon May 2 13:50:57 2011
@@ -22,6 +22,7 @@ import org.apache.solr.client.solrj.impl
import org.apache.solr.client.solrj.request.RequestWriter;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -38,7 +39,7 @@ public class TestBatchUpdate extends Sol
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
static final int numdocs = 1000;
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/JettyWebappTest.java Mon May 2 13:50:57 2011
@@ -26,6 +26,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.commons.io.IOUtils;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.client.solrj.SolrJettyTestBase;
+import org.apache.solr.util.ExternalPaths;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
@@ -47,13 +48,13 @@ public class JettyWebappTest extends Luc
public void setUp() throws Exception
{
super.setUp();
- System.setProperty("solr.solr.home", SolrJettyTestBase.EXAMPLE_HOME);
+ System.setProperty("solr.solr.home", ExternalPaths.EXAMPLE_HOME);
File dataDir = new File(SolrTestCaseJ4.TEMP_DIR,
getClass().getName() + "-" + System.currentTimeMillis());
dataDir.mkdirs();
System.setProperty("solr.data.dir", dataDir.getCanonicalPath());
- String path = SolrJettyTestBase.WEBAPP_HOME;
+ String path = ExternalPaths.WEBAPP_HOME;
server = new Server(port);
// insecure: only use for tests!!!!
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeBinaryJettyTest.java Mon May 2 13:50:57 2011
@@ -17,6 +17,7 @@
package org.apache.solr.client.solrj.embedded;
import org.apache.solr.client.solrj.LargeVolumeTestBase;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
/**
@@ -26,6 +27,6 @@ import org.junit.BeforeClass;
public class LargeVolumeBinaryJettyTest extends LargeVolumeTestBase {
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeEmbeddedTest.java Mon May 2 13:50:57 2011
@@ -18,11 +18,12 @@
package org.apache.solr.client.solrj.embedded;
import org.apache.solr.client.solrj.LargeVolumeTestBase;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
public class LargeVolumeEmbeddedTest extends LargeVolumeTestBase {
@BeforeClass
public static void beforeTest() throws Exception {
- initCore(EXAMPLE_CONFIG, EXAMPLE_SCHEMA, EXAMPLE_HOME);
+ initCore(ExternalPaths.EXAMPLE_CONFIG, ExternalPaths.EXAMPLE_SCHEMA, ExternalPaths.EXAMPLE_HOME);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/LargeVolumeJettyTest.java Mon May 2 13:50:57 2011
@@ -18,11 +18,12 @@
package org.apache.solr.client.solrj.embedded;
import org.apache.solr.client.solrj.LargeVolumeTestBase;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
public class LargeVolumeJettyTest extends LargeVolumeTestBase {
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleEmbeddedTest.java Mon May 2 13:50:57 2011
@@ -18,6 +18,7 @@
package org.apache.solr.client.solrj.embedded;
import org.apache.solr.client.solrj.SolrExampleTests;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
/**
@@ -30,6 +31,6 @@ public class SolrExampleEmbeddedTest ext
@BeforeClass
public static void beforeTest() throws Exception {
- initCore(EXAMPLE_CONFIG, EXAMPLE_SCHEMA, EXAMPLE_HOME);
+ initCore(ExternalPaths.EXAMPLE_CONFIG, ExternalPaths.EXAMPLE_SCHEMA, ExternalPaths.EXAMPLE_HOME);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleJettyTest.java Mon May 2 13:50:57 2011
@@ -19,6 +19,7 @@ package org.apache.solr.client.solrj.emb
import org.apache.solr.client.solrj.SolrExampleTests;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
+import org.apache.solr.util.ExternalPaths;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -33,7 +34,7 @@ public class SolrExampleJettyTest extend
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
@Test
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/SolrExampleStreamingTest.java Mon May 2 13:50:57 2011
@@ -21,6 +21,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
@@ -32,7 +33,7 @@ import org.junit.BeforeClass;
public class SolrExampleStreamingTest extends SolrExampleTests {
@BeforeClass
public static void beforeTest() throws Exception {
- createJetty(EXAMPLE_HOME, null, null);
+ createJetty(ExternalPaths.EXAMPLE_HOME, null, null);
}
@Override
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/embedded/TestSolrProperties.java Mon May 2 13:50:57 2011
@@ -70,11 +70,13 @@ public class TestSolrProperties extends
@Before
public void setUp() throws Exception {
super.setUp();
+ System.setProperty("solr.solr.home", getSolrHome());
+
File home = SolrTestCaseJ4.getFile(getSolrHome());
System.setProperty("solr.solr.home", home.getAbsolutePath());
log.info("pwd: " + (new File(".")).getAbsolutePath());
- solrXml = new File(home, "solr.xml");
+ solrXml = new File(home, getSolrXml());
cores = new CoreContainer(home.getAbsolutePath(), solrXml);
}
@@ -109,6 +111,10 @@ public class TestSolrProperties extends
protected SolrServer getSolrAdmin() {
return new EmbeddedSolrServer(cores, "core0");
}
+
+ protected SolrServer getRenamedSolrAdmin() {
+ return new EmbeddedSolrServer(cores, "renamed_core");
+ }
protected SolrServer getSolrCore(String name) {
return new EmbeddedSolrServer(cores, name);
@@ -187,16 +193,31 @@ public class TestSolrProperties extends
mcr = CoreAdminRequest.persist("solr-persist.xml", coreadmin);
- // System.out.println(IOUtils.toString(new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"))));
+ //System.out.println(IOUtils.toString(new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"))));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
FileInputStream fis = new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"));
try {
Document document = builder.parse(fis);
assertTrue(exists("/solr/cores[@defaultCoreName='core0']", document));
+ assertTrue(exists("/solr/cores[@host='127.0.0.1']", document));
+ assertTrue(exists("/solr/cores[@hostPort='8983']", document));
+ assertTrue(exists("/solr/cores[@zkClientTimeout='8000']", document));
+ assertTrue(exists("/solr/cores[@hostContext='solr']", document));
+
+ } finally {
+ fis.close();
+ }
+
+ CoreAdminRequest.renameCore(name, "renamed_core", coreadmin);
+ mcr = CoreAdminRequest.persist("solr-persist.xml", getRenamedSolrAdmin());
+
+ fis = new FileInputStream(new File(solrXml.getParent(), "solr-persist.xml"));
+ try {
+ Document document = builder.parse(fis);
+ assertTrue(exists("/solr/cores/core[@name='renamed_core']", document));
} finally {
fis.close();
}
-
}
public static boolean exists(String xpathStr, Node node)
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TermsResponseTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TermsResponseTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TermsResponseTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TermsResponseTest.java Mon May 2 13:50:57 2011
@@ -24,6 +24,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.response.TermsResponse.Term;
+import org.apache.solr.util.ExternalPaths;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -35,7 +36,7 @@ public class TermsResponseTest extends S
@BeforeClass
public static void beforeTest() throws Exception {
- initCore(EXAMPLE_CONFIG, EXAMPLE_SCHEMA, EXAMPLE_HOME);
+ initCore(ExternalPaths.EXAMPLE_CONFIG, ExternalPaths.EXAMPLE_SCHEMA, ExternalPaths.EXAMPLE_HOME);
}
@Before
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TestSpellCheckResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TestSpellCheckResponse.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TestSpellCheckResponse.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/client/solrj/response/TestSpellCheckResponse.java Mon May 2 13:50:57 2011
@@ -25,6 +25,7 @@ import org.apache.solr.client.solrj.resp
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.SpellingParams;
+import org.apache.solr.util.ExternalPaths;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -40,7 +41,7 @@ public class TestSpellCheckResponse exte
@BeforeClass
public static void beforeTest() throws Exception {
// createJetty(EXAMPLE_HOME, null, null);
- initCore(EXAMPLE_CONFIG, EXAMPLE_SCHEMA, EXAMPLE_HOME);
+ initCore(ExternalPaths.EXAMPLE_CONFIG, ExternalPaths.EXAMPLE_SCHEMA, ExternalPaths.EXAMPLE_HOME);
// initCore("solrconfig.xml", "schema.xml", null);
}
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/cloud/BasicDistributedZkTest.java Mon May 2 13:50:57 2011
@@ -60,7 +60,7 @@ public class BasicDistributedZkTest exte
@BeforeClass
public static void beforeClass() throws Exception {
- System.setProperty("solr.solr.home", SolrTestCaseJ4.TEST_HOME);
+ System.setProperty("solr.solr.home", SolrTestCaseJ4.TEST_HOME());
}
@Override
Modified: lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/common/util/TestSystemIdResolver.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/common/util/TestSystemIdResolver.java?rev=1098566&r1=1098565&r2=1098566&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/common/util/TestSystemIdResolver.java (original)
+++ lucene/dev/branches/docvalues/solr/src/test/org/apache/solr/common/util/TestSystemIdResolver.java Mon May 2 13:50:57 2011
@@ -38,9 +38,9 @@ public class TestSystemIdResolver extend
}
public void testResolving() throws Exception {
- final ResourceLoader loader = new SolrResourceLoader(SolrTestCaseJ4.TEST_HOME, this.getClass().getClassLoader());
+ final ResourceLoader loader = new SolrResourceLoader(SolrTestCaseJ4.TEST_HOME(), this.getClass().getClassLoader());
final SystemIdResolver resolver = new SystemIdResolver(loader);
- final String fileUri = new File(SolrTestCaseJ4.TEST_HOME+"/crazy-path-to-config.xml").toURI().toASCIIString();
+ final String fileUri = new File(SolrTestCaseJ4.TEST_HOME()+"/crazy-path-to-config.xml").toURI().toASCIIString();
assertEquals("solrres:/test.xml", SystemIdResolver.createSystemIdFromResourceName("test.xml"));
assertEquals("solrres://@/usr/local/etc/test.xml", SystemIdResolver.createSystemIdFromResourceName("/usr/local/etc/test.xml"));
@@ -60,10 +60,10 @@ public class TestSystemIdResolver extend
assertEntityResolving(resolver, "solrres:/schema.xml", "solrres:/solrconfig.xml", "schema.xml");
assertEntityResolving(resolver, "solrres:/org/apache/solr/common/util/TestSystemIdResolver.class",
"solrres:/org/apache/solr/common/ResourceLoader.class", "util/TestSystemIdResolver.class");
- assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME+"/conf/schema.xml"),
- SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME+"/conf/solrconfig.xml"), "schema.xml");
- assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME+"/crazy-path-to-schema.xml"),
- SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME+"/crazy-path-to-config.xml"), "crazy-path-to-schema.xml");
+ assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME()+"/conf/schema.xml"),
+ SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME()+"/conf/solrconfig.xml"), "schema.xml");
+ assertEntityResolving(resolver, SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME()+"/crazy-path-to-schema.xml"),
+ SystemIdResolver.createSystemIdFromResourceName(SolrTestCaseJ4.TEST_HOME()+"/crazy-path-to-config.xml"), "crazy-path-to-schema.xml");
// test, that resolving works if somebody uses an absolute file:-URI in a href attribute, the resolver should return null (default fallback)
assertNull(resolver.resolveEntity(null, null, "solrres:/solrconfig.xml", fileUri));