You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/01/14 14:57:07 UTC
svn commit: r1059010 [3/4] - in /lucene/dev/branches/bulkpostings: ./ lucene/
lucene/contrib/instantiated/src/java/org/apache/lucene/store/instantiated/
lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/
lucene/contrib/memory/sr...
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/RandomSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/RandomSortField.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/RandomSortField.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/RandomSortField.java Fri Jan 14 13:57:03 2011
@@ -24,11 +24,11 @@ import org.apache.lucene.document.Fielda
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.*;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.search.QParser;
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.ValueSource;
-import org.apache.solr.search.SolrIndexReader;
/**
* Utility Field used for random sorting. It should not be passed a value.
@@ -78,17 +78,11 @@ public class RandomSortField extends Fie
* Given a field name and an IndexReader, get a random hash seed.
* Using dynamic fields, you can force the random order to change
*/
- private static int getSeed(String fieldName, IndexReader r) {
- SolrIndexReader top = (SolrIndexReader)r;
- int base=0;
- while (top.getParent() != null) {
- base += top.getBase();
- top = top.getParent();
- }
-
+ private static int getSeed(String fieldName, AtomicReaderContext context) {
+ final IndexReader top = ReaderUtil.getTopLevelContext(context).reader;
// calling getVersion() on a segment will currently give you a null pointer exception, so
// we use the top-level reader.
- return fieldName.hashCode() + base + (int)top.getVersion();
+ return fieldName.hashCode() + context.docBase + (int)top.getVersion();
}
@Override
@@ -129,7 +123,7 @@ public class RandomSortField extends Fie
}
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
- seed = getSeed(fieldname, context.reader);
+ seed = getSeed(fieldname, context);
return this;
}
@@ -155,9 +149,9 @@ public class RandomSortField extends Fie
}
@Override
- public DocValues getValues(Map context, final IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, final AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
- private final int seed = getSeed(field, reader);
+ private final int seed = getSeed(field, readerContext);
@Override
public float floatVal(int doc) {
return (float)hash(doc+seed);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableDoubleField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableDoubleField.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableDoubleField.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableDoubleField.java Fri Jan 14 13:57:03 2011
@@ -28,7 +28,7 @@ import org.apache.solr.search.function.F
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.StringIndexDocValues;
import org.apache.lucene.document.Fieldable;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.solr.util.ByteUtils;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.response.TextResponseWriter;
@@ -99,10 +99,10 @@ class SortableDoubleFieldSource extends
return "sdouble(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final double def = defVal;
- return new StringIndexDocValues(this, reader, field) {
+ return new StringIndexDocValues(this, readerContext, field) {
private final BytesRef spare = new BytesRef();
protected String toTerm(String readableValue) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableFloatField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableFloatField.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableFloatField.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableFloatField.java Fri Jan 14 13:57:03 2011
@@ -28,7 +28,7 @@ import org.apache.solr.search.function.F
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.StringIndexDocValues;
import org.apache.lucene.document.Fieldable;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.solr.util.ByteUtils;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.response.TextResponseWriter;
@@ -99,10 +99,10 @@ class SortableFloatFieldSource extends F
return "sfloat(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final float def = defVal;
- return new StringIndexDocValues(this, reader, field) {
+ return new StringIndexDocValues(this, readerContext, field) {
private final BytesRef spare = new BytesRef();
protected String toTerm(String readableValue) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableIntField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableIntField.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableIntField.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableIntField.java Fri Jan 14 13:57:03 2011
@@ -28,7 +28,7 @@ import org.apache.solr.search.function.F
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.StringIndexDocValues;
import org.apache.lucene.document.Fieldable;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.solr.util.ByteUtils;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.response.TextResponseWriter;
@@ -101,10 +101,10 @@ class SortableIntFieldSource extends Fie
return "sint(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final int def = defVal;
- return new StringIndexDocValues(this, reader, field) {
+ return new StringIndexDocValues(this, readerContext, field) {
private final BytesRef spare = new BytesRef();
protected String toTerm(String readableValue) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableLongField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableLongField.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableLongField.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/SortableLongField.java Fri Jan 14 13:57:03 2011
@@ -28,7 +28,7 @@ import org.apache.solr.search.function.F
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.StringIndexDocValues;
import org.apache.lucene.document.Fieldable;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.solr.util.ByteUtils;
import org.apache.solr.util.NumberUtils;
import org.apache.solr.response.TextResponseWriter;
@@ -100,10 +100,10 @@ class SortableLongFieldSource extends Fi
return "slong(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final long def = defVal;
- return new StringIndexDocValues(this, reader, field) {
+ return new StringIndexDocValues(this, readerContext, field) {
private final BytesRef spare = new BytesRef();
protected String toTerm(String readableValue) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/StrFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/StrFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/StrFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/schema/StrFieldSource.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.schema;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.FieldCacheSource;
@@ -36,8 +36,8 @@ public class StrFieldSource extends Fiel
return "str(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- return new StringIndexDocValues(this, reader, field) {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ return new StringIndexDocValues(this, readerContext, field) {
protected String toTerm(String readableValue) {
return readableValue;
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/Grouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/Grouping.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/Grouping.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/Grouping.java Fri Jan 14 13:57:03 2011
@@ -688,7 +688,7 @@ class TopGroupCollector extends GroupCol
@Override
public void setNextReader(AtomicReaderContext readerContext) throws IOException {
this.docBase = readerContext.docBase;
- docValues = vs.getValues(context, readerContext.reader);
+ docValues = vs.getValues(context, readerContext);
filler = docValues.getValueFiller();
mval = filler.getValue();
for (int i=0; i<comparators.length; i++)
@@ -762,7 +762,7 @@ class Phase2GroupCollector extends Colle
@Override
public void setNextReader(AtomicReaderContext readerContext) throws IOException {
this.docBase = readerContext.docBase;
- docValues = vs.getValues(context, readerContext.reader);
+ docValues = vs.getValues(context, readerContext);
filler = docValues.getValueFiller();
mval = filler.getValue();
for (SearchGroupDocs group : groupMap.values())
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Fri Jan 14 13:57:03 2011
@@ -90,7 +90,7 @@ public class SolrConstantScoreQuery exte
}
@Override
- public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
+ public Scorer scorer(AtomicReaderContext context, ScorerContext scorerContext) throws IOException {
return new ConstantScorer(similarity, context, this);
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrFilter.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrFilter.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrFilter.java Fri Jan 14 13:57:03 2011
@@ -22,7 +22,7 @@ import org.apache.lucene.search.IndexSea
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
-import org.apache.lucene.index.IndexReader.ReaderContext;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.util.Map;
import java.io.IOException;
@@ -39,7 +39,7 @@ public abstract class SolrFilter extends
* The context object will be passed to getDocIdSet() where this info can be retrieved. */
public abstract void createWeight(Map context, IndexSearcher searcher) throws IOException;
- public abstract DocIdSet getDocIdSet(Map context, ReaderContext readerContext) throws IOException;
+ public abstract DocIdSet getDocIdSet(Map context, AtomicReaderContext readerContext) throws IOException;
@Override
public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java Fri Jan 14 13:57:03 2011
@@ -69,7 +69,7 @@ public class SolrIndexSearcher extends I
private long openTime = System.currentTimeMillis();
private long registerTime = 0;
private long warmupTime = 0;
- private final SolrIndexReader reader;
+ private final IndexReader reader;
private final boolean closeReader;
public final MultiFields multiFields;
@@ -123,37 +123,25 @@ public class SolrIndexSearcher extends I
this(core, schema,name,r, false, enableCache);
}
- private static SolrIndexReader wrap(IndexReader r) {
- SolrIndexReader sir;
- // wrap the reader
- if (!(r instanceof SolrIndexReader)) {
- sir = new SolrIndexReader(r, null, 0);
- sir.associateInfo(null);
- } else {
- sir = (SolrIndexReader)r;
- }
- return sir;
- }
public SolrIndexSearcher(SolrCore core, IndexSchema schema, String name, IndexReader r, boolean closeReader, boolean enableCache) throws IOException {
- super(wrap(r));
- this.reader = (SolrIndexReader)super.getIndexReader();
+ super(r);
+ this.reader = getIndexReader();
this.core = core;
this.schema = schema;
this.name = "Searcher@" + Integer.toHexString(hashCode()) + (name!=null ? " "+name : "");
log.info("Opening " + this.name);
- SolrIndexReader.setSearcher(reader, this);
-
// set up MultiFields
- SolrIndexReader[] subReaders = reader.getLeafReaders();
+ AtomicReaderContext[] subReaders = ReaderUtil.leaves(getTopReaderContext());
+
readerSubs = new ReaderUtil.Slice[subReaders.length];
fieldSubs = new Fields[subReaders.length];
deletedDocs = new Bits[subReaders.length];
for (int i=0; i<subReaders.length; i++) {
- SolrIndexReader subReader = subReaders[i];
- readerSubs[i] = new ReaderUtil.Slice(subReader.getBase(), subReader.maxDoc(), i);
+ IndexReader subReader = subReaders[i].reader;
+ readerSubs[i] = new ReaderUtil.Slice(subReaders[i].docBaseInParent, subReader.maxDoc(), i);
fieldSubs[i] = MultiFields.getFields(subReader); // hopefully segment level
deletedDocs[i] = MultiFields.getDeletedDocs(subReader); // hopefully segment level
}
@@ -267,8 +255,6 @@ public class SolrIndexSearcher extends I
numCloses.incrementAndGet();
}
- /** Direct access to the IndexReader used by this searcher */
- public SolrIndexReader getReader() { return reader; }
/** Direct access to the IndexSchema for use with this searcher */
public IndexSchema getSchema() { return schema; }
@@ -505,12 +491,13 @@ public class SolrIndexSearcher extends I
* @return the first document number containing the term
*/
public int getFirstMatch(Term t) throws IOException {
- SolrIndexReader[] subReaders = getReader().getLeafReaders();
+ AtomicReaderContext[] subReaders = ReaderUtil.leaves(getTopReaderContext());
for (int i=0; i<subReaders.length; i++) {
- DocsEnum denum = MultiFields.getTermDocsEnum(subReaders[i], deletedDocs[i], t.field(), t.bytes());
+ IndexReader ir = subReaders[i].reader;
+ DocsEnum denum = ir.termDocsEnum(deletedDocs[i], t.field(), t.bytes());
if (denum == null) continue;
int id = denum.nextDoc();
- if (id != DocIdSetIterator.NO_MORE_DOCS) return id + subReaders[i].getBase();
+ if (id != DocIdSetIterator.NO_MORE_DOCS) return id + subReaders[i].docBaseInParent;
}
return -1;
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/ValueSourceParser.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@
*/
package org.apache.solr.search;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;
@@ -710,7 +710,7 @@ class LongConstValueSource extends Const
return "const(" + constant + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
public float floatVal(int doc) {
return fv;
@@ -807,8 +807,8 @@ abstract class DoubleParser extends Name
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return (float)doubleVal(doc);
@@ -862,9 +862,9 @@ abstract class Double2Parser extends Nam
return name() + "(" + a.description() + "," + b.description() + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues aVals = a.getValues(context, reader);
- final DocValues bVals = b.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues aVals = a.getValues(context, readerContext);
+ final DocValues bVals = b.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return (float)doubleVal(doc);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/BoostedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/BoostedQuery.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/BoostedQuery.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/BoostedQuery.java Fri Jan 14 13:57:03 2011
@@ -91,12 +91,12 @@ public class BoostedQuery extends Query
}
@Override
- public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- Scorer subQueryScorer = qWeight.scorer(context, true, false);
+ public Scorer scorer(AtomicReaderContext context, ScorerContext scorerContext) throws IOException {
+ Scorer subQueryScorer = qWeight.scorer(context, ScorerContext.def());
if(subQueryScorer == null) {
return null;
}
- return new BoostedQuery.CustomScorer(getSimilarity(searcher), searcher, context.reader, this, subQueryScorer, boostVal);
+ return new BoostedQuery.CustomScorer(getSimilarity(searcher), context, this, subQueryScorer, boostVal);
}
@Override
@@ -105,7 +105,7 @@ public class BoostedQuery extends Query
if (!subQueryExpl.isMatch()) {
return subQueryExpl;
}
- DocValues vals = boostVal.getValues(fcontext, readerContext.reader);
+ DocValues vals = boostVal.getValues(fcontext, readerContext);
float sc = subQueryExpl.getValue() * vals.floatVal(doc);
Explanation res = new ComplexExplanation(
true, sc, BoostedQuery.this.toString() + ", product of:");
@@ -121,18 +121,16 @@ public class BoostedQuery extends Query
private final float qWeight;
private final Scorer scorer;
private final DocValues vals;
- private final IndexReader reader;
- private final IndexSearcher searcher;
+ private final AtomicReaderContext readerContext;
- private CustomScorer(Similarity similarity, IndexSearcher searcher, IndexReader reader, BoostedQuery.BoostedWeight w,
+ private CustomScorer(Similarity similarity, AtomicReaderContext readerContext, BoostedQuery.BoostedWeight w,
Scorer scorer, ValueSource vs) throws IOException {
super(similarity);
this.weight = w;
this.qWeight = w.getValue();
this.scorer = scorer;
- this.reader = reader;
- this.searcher = searcher; // for explain
- this.vals = vs.getValues(weight.fcontext, reader);
+ this.readerContext = readerContext;
+ this.vals = vs.getValues(weight.fcontext, readerContext);
}
@Override
@@ -161,7 +159,7 @@ public class BoostedQuery extends Query
}
public Explanation explain(int doc) throws IOException {
- Explanation subQueryExpl = weight.qWeight.explain(ValueSource.readerToContext(weight.fcontext,reader) ,doc);
+ Explanation subQueryExpl = weight.qWeight.explain(readerContext ,doc);
if (!subQueryExpl.isMatch()) {
return subQueryExpl;
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@ package org.apache.solr.search.function;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.cache.ByteValuesCreator;
import org.apache.lucene.search.cache.CachedArray.ByteValues;
@@ -41,8 +41,8 @@ public class ByteFieldSource extends Num
return "byte(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final ByteValues vals = cache.getBytes(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final ByteValues vals = cache.getBytes(readerContext.reader, field, creator);
final byte[] arr = vals.values;
return new DocValues() {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ConstValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ConstValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ConstValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ConstValueSource.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
import java.util.Map;
@@ -38,7 +38,7 @@ public class ConstValueSource extends Co
return "const(" + constant + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
public float floatVal(int doc) {
return constant;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DocFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DocFreqValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DocFreqValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DocFreqValueSource.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.util.BytesRef;
@@ -239,7 +239,7 @@ public class DocFreqValueSource extends
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
int docfreq = searcher.docFreq(new Term(indexedField, indexedBytes));
return new ConstIntDocValues(docfreq, this);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleConstValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleConstValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleConstValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleConstValueSource.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
import java.util.Map;
@@ -37,7 +37,7 @@ public class DoubleConstValueSource exte
return "const(" + constant + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
public float floatVal(int doc) {
return fv;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DoubleFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.Bits;
import org.apache.lucene.search.cache.DoubleValuesCreator;
import org.apache.lucene.search.cache.CachedArray.DoubleValues;
@@ -45,8 +46,8 @@ public class DoubleFieldSource extends N
return "double(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DoubleValues vals = cache.getDoubles(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DoubleValues vals = cache.getDoubles(readerContext.reader, field, creator);
final double[] arr = vals.values;
final Bits valid = vals.valid;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DualFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DualFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DualFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/DualFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -43,9 +43,9 @@ public abstract class DualFloatFunction
return name() + "(" + a.description() + "," + b.description() + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues aVals = a.getValues(context, reader);
- final DocValues bVals = b.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues aVals = a.getValues(context, readerContext);
+ final DocValues bVals = b.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return func(doc, aVals, bVals);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FileFloatSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FileFloatSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FileFloatSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FileFloatSource.java Fri Jan 14 13:57:03 2011
@@ -18,15 +18,17 @@ package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.DocsEnum;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.StringHelper;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.core.SolrCore;
import org.apache.solr.schema.SchemaField;
import org.apache.solr.schema.FieldType;
import org.apache.solr.search.QParser;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.util.VersionedFile;
import java.io.*;
@@ -55,19 +57,12 @@ public class FileFloatSource extends Val
return "float(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
int offset = 0;
- if (reader instanceof SolrIndexReader) {
- SolrIndexReader r = (SolrIndexReader)reader;
- while (r.getParent() != null) {
- offset += r.getBase();
- r = r.getParent();
- }
- reader = r;
- }
+ ReaderContext topLevelContext = ReaderUtil.getTopLevelContext(readerContext);
final int off = offset;
- final float[] arr = getCachedFloats(reader);
+ final float[] arr = getCachedFloats(topLevelContext.reader);
return new DocValues() {
public float floatVal(int doc) {
return arr[doc + off];
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FloatFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FloatFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FloatFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FloatFieldSource.java Fri Jan 14 13:57:03 2011
@@ -20,7 +20,7 @@ package org.apache.solr.search.function;
import java.io.IOException;
import java.util.Map;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.Bits;
import org.apache.lucene.search.cache.FloatValuesCreator;
import org.apache.lucene.search.cache.CachedArray.FloatValues;
@@ -45,8 +45,8 @@ public class FloatFieldSource extends Nu
return "float(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final FloatValues vals = cache.getFloats(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final FloatValues vals = cache.getFloats(readerContext.reader, field, creator);
final float[] arr = vals.values;
final Bits valid = vals.valid;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FunctionQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FunctionQuery.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FunctionQuery.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/FunctionQuery.java Fri Jan 14 13:57:03 2011
@@ -19,7 +19,6 @@ package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
-import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.search.*;
import org.apache.lucene.index.MultiFields;
import org.apache.lucene.util.Bits;
@@ -95,13 +94,13 @@ public class FunctionQuery extends Query
}
@Override
- public Scorer scorer(AtomicReaderContext context, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
+ public Scorer scorer(AtomicReaderContext context, ScorerContext scorerContext) throws IOException {
return new AllScorer(getSimilarity(searcher), context, this);
}
@Override
public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
- return ((AllScorer)scorer(context, true, true)).explain(doc);
+ return ((AllScorer)scorer(context, ScorerContext.def().scoreDocsInOrder(true).topScorer(true))).explain(doc);
}
}
@@ -115,7 +114,7 @@ public class FunctionQuery extends Query
final boolean hasDeletions;
final Bits delDocs;
- public AllScorer(Similarity similarity, ReaderContext context, FunctionWeight w) throws IOException {
+ public AllScorer(Similarity similarity, AtomicReaderContext context, FunctionWeight w) throws IOException {
super(similarity);
this.weight = w;
this.qWeight = w.getValue();
@@ -124,9 +123,7 @@ public class FunctionQuery extends Query
this.hasDeletions = reader.hasDeletions();
this.delDocs = MultiFields.getDeletedDocs(reader);
assert !hasDeletions || delDocs != null;
- Map funcContext = weight.context;
- funcContext.put(reader, context);
- vals = func.getValues(funcContext, reader);
+ vals = func.getValues(weight.context, context);
}
@Override
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IDFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IDFValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IDFValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IDFValueSource.java Fri Jan 14 13:57:03 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.util.BytesRef;
@@ -38,7 +39,7 @@ public class IDFValueSource extends DocF
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
Similarity sim = searcher.getSimilarity();
// todo: we need docFreq that takes a BytesRef
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IntFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IntFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IntFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/IntFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.Bits;
import org.apache.solr.search.MutableValueInt;
import org.apache.solr.search.MutableValue;
@@ -45,8 +46,8 @@ public class IntFieldSource extends Nume
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final IntValues vals = cache.getInts(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final IntValues vals = cache.getInts(readerContext.reader, field, creator);
final int[] arr = vals.values;
final Bits valid = vals.valid;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/JoinDocFreqValueSource.java Fri Jan 14 13:57:03 2011
@@ -21,10 +21,11 @@ import java.io.IOException;
import java.util.Map;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.FieldCache.DocTerms;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.common.SolrException;
-import org.apache.solr.search.SolrIndexReader;
/**
* Use a field value and find the Document Frequency within another field.
@@ -46,21 +47,10 @@ public class JoinDocFreqValueSource exte
return NAME + "(" + field +":("+qfield+"))";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException
{
- final DocTerms terms = cache.getTerms(reader, field, true );
-
- int offset = 0;
- IndexReader topReader = reader;
- if (topReader instanceof SolrIndexReader) {
- SolrIndexReader r = (SolrIndexReader)topReader;
- while (r.getParent() != null) {
- offset += r.getBase();
- r = r.getParent();
- }
- topReader = r;
- }
- final IndexReader top = topReader;
+ final DocTerms terms = cache.getTerms(readerContext.reader, field, true );
+ final IndexReader top = ReaderUtil.getTopLevelContext(readerContext).reader;
return new DocValues() {
BytesRef ref = new BytesRef();
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LinearFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -46,8 +46,8 @@ public class LinearFloatFunction extends
return slope + "*float(" + source.description() + ")+" + intercept;
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return vals.floatVal(doc) * slope + intercept;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LiteralValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LiteralValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LiteralValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LiteralValueSource.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@ package org.apache.solr.search.function;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.util.Map;
import java.io.IOException;
@@ -38,7 +38,7 @@ public class LiteralValueSource extends
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
@Override
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LongFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LongFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LongFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/LongFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.Bits;
import org.apache.lucene.search.cache.LongValuesCreator;
import org.apache.lucene.search.cache.CachedArray.LongValues;
@@ -50,8 +51,8 @@ public class LongFieldSource extends Num
return Long.parseLong(extVal);
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final LongValues vals = cache.getLongs(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final LongValues vals = cache.getLongs(readerContext.reader, field, creator);
final long[] arr = vals.values;
final Bits valid = vals.valid;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxDocValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxDocValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxDocValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxDocValueSource.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@
*/
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -38,7 +38,7 @@ public class MaxDocValueSource extends V
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
return new ConstIntDocValues(searcher.maxDoc(), this);
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MaxFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -45,8 +45,8 @@ public class MaxFloatFunction extends Va
return "max(" + source.description() + "," + fval + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
float v = vals.floatVal(doc);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/MultiFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@ package org.apache.solr.search.function;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.util.Map;
@@ -54,10 +54,10 @@ public abstract class MultiFloatFunction
return sb.toString();
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
final DocValues[] valsArr = new DocValues[sources.length];
for (int i=0; i<sources.length; i++) {
- valsArr[i] = sources[i].getValues(context, reader);
+ valsArr[i] = sources[i].getValues(context, readerContext);
}
return new DocValues() {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NormValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NormValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NormValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NormValueSource.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Similarity;
import java.io.IOException;
@@ -44,10 +44,10 @@ public class NormValueSource extends Val
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
IndexSearcher searcher = (IndexSearcher)context.get("searcher");
final Similarity similarity = searcher.getSimilarity();
- final byte[] norms = reader.norms(field);
+ final byte[] norms = readerContext.reader.norms(field);
if (norms == null) {
return new ConstDoubleDocValues(0.0, this);
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NumDocsValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NumDocsValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NumDocsValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/NumDocsValueSource.java Fri Jan 14 13:57:03 2011
@@ -16,8 +16,8 @@
*/
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
-import org.apache.solr.search.SolrIndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.util.ReaderUtil;
import java.io.IOException;
import java.util.Map;
@@ -33,11 +33,9 @@ public class NumDocsValueSource extends
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
// Searcher has no numdocs so we must use the reader instead
- SolrIndexReader topReader = (SolrIndexReader)reader;
- while (topReader.getParent() != null) topReader = topReader.getParent();
- return new ConstIntDocValues(topReader.numDocs(), this);
+ return new ConstIntDocValues(ReaderUtil.getTopLevelContext(readerContext).reader.numDocs(), this);
}
@Override
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/OrdFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,10 +18,11 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.FieldCache;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.search.MutableValue;
import org.apache.solr.search.MutableValueInt;
-import org.apache.solr.search.SolrIndexReader;
import java.io.IOException;
import java.util.Map;
@@ -56,21 +57,10 @@ public class OrdFieldSource extends Valu
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- int offset = 0;
- IndexReader topReader = reader;
- if (topReader instanceof SolrIndexReader) {
- SolrIndexReader r = (SolrIndexReader)topReader;
- while (r.getParent() != null) {
- offset += r.getBase();
- r = r.getParent();
- }
- topReader = r;
- }
- final int off = offset;
-
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final int off = readerContext.docBase;
+ final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader;
final FieldCache.DocTermsIndex sindex = FieldCache.DEFAULT.getTermsIndex(topReader, field);
-
return new DocValues() {
protected String toTerm(String readableValue) {
return readableValue;
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/QueryValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/QueryValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/QueryValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/QueryValueSource.java Fri Jan 14 13:57:03 2011
@@ -18,7 +18,10 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
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 java.io.IOException;
@@ -44,8 +47,8 @@ public class QueryValueSource extends Va
}
@Override
- public DocValues getValues(Map fcontext, IndexReader reader) throws IOException {
- return new QueryDocValues(reader, q, defVal, fcontext);
+ public DocValues getValues(Map fcontext, AtomicReaderContext readerContext) throws IOException {
+ return new QueryDocValues(readerContext, q, defVal, fcontext);
}
public int hashCode() {
@@ -68,7 +71,8 @@ public class QueryValueSource extends Va
class QueryDocValues extends DocValues {
final Query q;
- final IndexReader reader;
+// final IndexReader reader;
+ final AtomicReaderContext readerContext;
final Weight weight;
final float defVal;
final Map fcontext;
@@ -79,21 +83,28 @@ class QueryDocValues extends DocValues {
// the last document requested... start off with high value
// to trigger a scorer reset on first access.
int lastDocRequested=Integer.MAX_VALUE;
+
- public QueryDocValues(IndexReader reader, Query q, float defVal, Map fcontext) throws IOException {
- this.reader = reader;
+ public QueryDocValues(AtomicReaderContext readerContext, Query q, float defVal, Map fcontext) throws IOException {
+ IndexReader reader = readerContext.reader;
+ this.readerContext = readerContext;
this.q = q;
this.defVal = defVal;
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 = fcontext == null ? new IndexSearcher(reader) : (IndexSearcher)fcontext.get("searcher");
-
- // TODO: sort by function doesn't weight (SOLR-1297 is open because of this bug)... so weightSearcher will currently be null
- if (weightSearcher == null) weightSearcher = new IndexSearcher(reader);
-
- w = q.weight(weightSearcher);
+ IndexSearcher weightSearcher;
+ if(fcontext == null) {
+ weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext), readerContext);
+ } else {
+ weightSearcher = (IndexSearcher)fcontext.get("searcher");
+ if (weightSearcher == null) {
+ weightSearcher = new IndexSearcher(ReaderUtil.getTopLevelContext(readerContext), readerContext);
+ }
+ }
+ w = q.weight(weightSearcher);
}
weight = w;
}
@@ -101,15 +112,7 @@ class QueryDocValues extends DocValues {
public float floatVal(int doc) {
try {
if (doc < lastDocRequested) {
- // out-of-order access.... reset scorer.
- IndexReader.AtomicReaderContext ctx = ValueSource.readerToContext(fcontext, reader);
-
- if (ctx == null) {
- // TODO: this is because SOLR-1297 does not weight
- ctx = (IndexReader.AtomicReaderContext)reader.getTopReaderContext(); // this is the incorrect context
- }
-
- scorer = weight.scorer(ctx, true, false);
+ scorer = weight.scorer(readerContext, ScorerContext.def());
if (scorer==null) return defVal;
scorerDoc = -1;
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/RangeMapFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -50,8 +50,8 @@ public class RangeMapFloatFunction exten
return "map(" + source.description() + "," + min + "," + max + "," + target + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
float val = vals.floatVal(doc);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReciprocalFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import java.io.IOException;
@@ -57,8 +57,8 @@ public class ReciprocalFloatFunction ext
this.b=b;
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return a/(m*vals.floatVal(doc) + b);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,8 +18,9 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.FieldCache;
-import org.apache.solr.search.SolrIndexReader;
+import org.apache.lucene.util.ReaderUtil;
import java.io.IOException;
import java.util.Map;
@@ -56,18 +57,9 @@ public class ReverseOrdFieldSource exten
return "rord("+field+')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- int offset = 0;
- IndexReader topReader = reader;
- if (topReader instanceof SolrIndexReader) {
- SolrIndexReader r = (SolrIndexReader)topReader;
- while (r.getParent() != null) {
- offset += r.getBase();
- r = r.getParent();
- }
- topReader = r;
- }
- final int off = offset;
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final IndexReader topReader = ReaderUtil.getTopLevelContext(readerContext).reader;
+ final int off = readerContext.docBase;
final FieldCache.DocTermsIndex sindex = FieldCache.DEFAULT.getTermsIndex(topReader, field);
final int end = sindex.numOrd();
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ScaleFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,6 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.util.ReaderUtil;
@@ -56,17 +55,15 @@ public class ScaleFloatFunction extends
float maxVal;
}
- private ScaleInfo createScaleInfo(Map context, IndexReader reader) throws IOException {
- IndexReader.ReaderContext ctx = ValueSource.readerToContext(context, reader);
- while (ctx.parent != null) ctx = ctx.parent;
- final AtomicReaderContext[] leaves = ReaderUtil.leaves(ctx);
+ private ScaleInfo createScaleInfo(Map context, AtomicReaderContext readerContext) throws IOException {
+ final AtomicReaderContext[] leaves = ReaderUtil.leaves(ReaderUtil.getTopLevelContext(readerContext));
float minVal = Float.POSITIVE_INFINITY;
float maxVal = Float.NEGATIVE_INFINITY;
for (AtomicReaderContext leaf : leaves) {
int maxDoc = leaf.reader.maxDoc();
- DocValues vals = source.getValues(context, leaf.reader);
+ DocValues vals = source.getValues(context, leaf);
for (int i=0; i<maxDoc; i++) {
float val = vals.floatVal(i);
@@ -96,18 +93,18 @@ public class ScaleFloatFunction extends
return scaleInfo;
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
ScaleInfo scaleInfo = (ScaleInfo)context.get(source);
if (scaleInfo == null) {
- scaleInfo = createScaleInfo(context, reader);
+ scaleInfo = createScaleInfo(context, readerContext);
}
final float scale = (scaleInfo.maxVal-scaleInfo.minVal==0) ? 0 : (max-min)/(scaleInfo.maxVal-scaleInfo.minVal);
final float minSource = scaleInfo.minVal;
final float maxSource = scaleInfo.maxVal;
- final DocValues vals = source.getValues(context, reader);
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ShortFieldSource.java Fri Jan 14 13:57:03 2011
@@ -18,7 +18,7 @@ package org.apache.solr.search.function;
import org.apache.lucene.search.cache.ShortValuesCreator;
import org.apache.lucene.search.cache.CachedArray.ShortValues;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
import java.util.Map;
@@ -39,8 +39,8 @@ public class ShortFieldSource extends Nu
return "short(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final ShortValues vals = cache.getShorts(reader, field, creator);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final ShortValues vals = cache.getShorts(readerContext.reader, field, creator);
final short[] arr = vals.values;
return new DocValues() {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/SimpleFloatFunction.java Fri Jan 14 13:57:03 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search.function;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
import java.util.Map;
@@ -32,8 +32,8 @@ import java.util.Map;
protected abstract float func(int doc, DocValues vals);
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues vals = source.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues vals = source.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
return func(doc, vals);
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/StringIndexDocValues.java Fri Jan 14 13:57:03 2011
@@ -19,6 +19,7 @@ package org.apache.solr.search.function;
import org.apache.lucene.search.FieldCache;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.search.MutableValue;
import org.apache.solr.search.MutableValueStr;
@@ -33,9 +34,9 @@ public abstract class StringIndexDocValu
protected final ValueSource vs;
protected final MutableValueStr val = new MutableValueStr();
- public StringIndexDocValues(ValueSource vs, IndexReader reader, String field) throws IOException {
+ public StringIndexDocValues(ValueSource vs, AtomicReaderContext context, String field) throws IOException {
try {
- termsIndex = FieldCache.DEFAULT.getTermsIndex(reader, field);
+ termsIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, field);
} catch (RuntimeException e) {
throw new StringIndexException(field, e);
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TFValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TFValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TFValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TFValueSource.java Fri Jan 14 13:57:03 2011
@@ -1,6 +1,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Similarity;
@@ -21,9 +22,8 @@ public class TFValueSource extends TermF
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- // use MultiFields, just in case someone did a top() function
- Fields fields = MultiFields.getFields(reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ Fields fields = readerContext.reader.fields();
final Terms terms = fields.terms(field);
final Similarity similarity = ((IndexSearcher)context.get("searcher")).getSimilarity();
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TermFreqValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TermFreqValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TermFreqValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/TermFreqValueSource.java Fri Jan 14 13:57:03 2011
@@ -18,6 +18,7 @@
package org.apache.solr.search.function;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.SolrException;
@@ -36,9 +37,8 @@ public class TermFreqValueSource extends
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- // use MultiFields, just in case someone did a top() function
- Fields fields = MultiFields.getFields(reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ Fields fields = readerContext.reader.fields();
final Terms terms = fields.terms(field);
return new IntDocValues(this) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSource.java Fri Jan 14 13:57:03 2011
@@ -19,7 +19,6 @@ package org.apache.solr.search.function;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
-import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.FieldComparatorSource;
import org.apache.lucene.search.Scorer;
@@ -47,7 +46,7 @@ public abstract class ValueSource implem
* Gets the values for this reader and the context that was previously
* passed to createWeight()
*/
- public abstract DocValues getValues(Map context, IndexReader reader) throws IOException;
+ public abstract DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException;
public abstract boolean equals(Object o);
@@ -66,7 +65,7 @@ public abstract class ValueSource implem
* EXPERIMENTAL: This method is subject to change.
* <br>WARNING: Sorted function queries are not currently weighted.
* <p>
- * Get the SortField for this ValueSource. Uses the {@link #getValues(java.util.Map, org.apache.lucene.index.IndexReader)}
+ * Get the SortField for this ValueSource. Uses the {@link #getValues(java.util.Map, AtomicReaderContext)}
* to populate the SortField.
*
* @param reverse true if this is a reverse sort.
@@ -98,40 +97,6 @@ public abstract class ValueSource implem
return context;
}
- /* @lucene.internal
- * This will most likely go away in the future.
- */
- public static AtomicReaderContext readerToContext(Map fcontext, IndexReader reader) {
- Object v = fcontext.get(reader);
- if (v == null) {
- IndexSearcher searcher = (IndexSearcher)fcontext.get("searcher");
- if (searcher == null) {
- return null;
- // TODO
- // throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "no searcher found in function context");
- }
- ReaderContext rcontext = searcher.getIndexReader().getTopReaderContext();
- if (rcontext.isAtomic) {
- assert rcontext.reader == reader;
- fcontext.put(rcontext.reader, (AtomicReaderContext)rcontext);
- } else {
- for (AtomicReaderContext subCtx : rcontext.leaves()) {
- fcontext.put(subCtx.reader, subCtx);
- }
- }
-
- v = fcontext.get(reader);
- if (v == null) {
- return null;
- // TODO
- // throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "reader " + reader + " is not from the top reader " + searcher.getIndexReader());
- }
- }
-
- return (AtomicReaderContext)v;
- }
-
-
class ValueSourceComparatorSource extends FieldComparatorSource {
@@ -188,7 +153,7 @@ public abstract class ValueSource implem
}
public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
- docVals = getValues(Collections.emptyMap(), context.reader);
+ docVals = getValues(Collections.emptyMap(), context);
return this;
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/ValueSourceRangeFilter.java Fri Jan 14 13:57:03 2011
@@ -20,7 +20,7 @@ package org.apache.solr.search.function;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.index.IndexReader.ReaderContext;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.solr.search.SolrFilter;
import java.io.IOException;
@@ -49,10 +49,10 @@ public class ValueSourceRangeFilter exte
this.includeUpper = upperVal != null && includeUpper;
}
- public DocIdSet getDocIdSet(final Map context, final ReaderContext readerContext) throws IOException {
+ public DocIdSet getDocIdSet(final Map context, final AtomicReaderContext readerContext) throws IOException {
return new DocIdSet() {
public DocIdSetIterator iterator() throws IOException {
- return valueSource.getValues(context, readerContext.reader).getRangeScorer(readerContext.reader, lowerVal, upperVal, includeLower, includeUpper);
+ return valueSource.getValues(context, readerContext).getRangeScorer(readerContext.reader, lowerVal, upperVal, includeLower, includeUpper);
}
};
}
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/VectorValueSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/VectorValueSource.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/VectorValueSource.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/VectorValueSource.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@ package org.apache.solr.search.function;
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.solr.search.function.MultiValueSource;
import org.apache.solr.search.function.DocValues;
@@ -53,13 +53,13 @@ public class VectorValueSource extends M
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
int size = sources.size();
// special-case x,y and lat,lon since it's so common
if (size==2) {
- final DocValues x = sources.get(0).getValues(context, reader);
- final DocValues y = sources.get(1).getValues(context, reader);
+ final DocValues x = sources.get(0).getValues(context, readerContext);
+ final DocValues y = sources.get(1).getValues(context, readerContext);
return new DocValues() {
@Override
public void byteVal(int doc, byte[] vals) {
@@ -106,7 +106,7 @@ public class VectorValueSource extends M
final DocValues[] valsArr = new DocValues[size];
for (int i = 0; i < size; i++) {
- valsArr[i] = sources.get(i).getValues(context, reader);
+ valsArr[i] = sources.get(i).getValues(context, readerContext);
}
return new DocValues() {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashFunction.java Fri Jan 14 13:57:03 2011
@@ -18,7 +18,7 @@ package org.apache.solr.search.function.
import org.apache.solr.search.function.ValueSource;
import org.apache.solr.search.function.DocValues;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.spatial.geohash.GeoHashUtils;
import java.util.Map;
@@ -46,9 +46,9 @@ public class GeohashFunction extends Val
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues latDV = lat.getValues(context, reader);
- final DocValues lonDV = lon.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues latDV = lat.getValues(context, readerContext);
+ final DocValues lonDV = lon.getValues(context, readerContext);
return new DocValues() {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/GeohashHaversineFunction.java Fri Jan 14 13:57:03 2011
@@ -20,7 +20,7 @@ package org.apache.solr.search.function.
import org.apache.lucene.spatial.DistanceUtils;
import org.apache.solr.search.function.ValueSource;
import org.apache.solr.search.function.DocValues;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.spatial.geohash.GeoHashUtils;
@@ -54,9 +54,9 @@ public class GeohashHaversineFunction ex
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues gh1DV = geoHash1.getValues(context, reader);
- final DocValues gh2DV = geoHash2.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues gh1DV = geoHash1.getValues(context, readerContext);
+ final DocValues gh2DV = geoHash2.getValues(context, readerContext);
return new DocValues() {
public float floatVal(int doc) {
Modified: lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java?rev=1059010&r1=1059009&r2=1059010&view=diff
==============================================================================
--- lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java (original)
+++ lucene/dev/branches/bulkpostings/solr/src/java/org/apache/solr/search/function/distance/HaversineConstFunction.java Fri Jan 14 13:57:03 2011
@@ -16,7 +16,7 @@ package org.apache.solr.search.function.
* limitations under the License.
*/
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.spatial.DistanceUtils;
@@ -190,9 +190,9 @@ public class HaversineConstFunction exte
}
@Override
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final DocValues latVals = latSource.getValues(context, reader);
- final DocValues lonVals = lonSource.getValues(context, reader);
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
+ final DocValues latVals = latSource.getValues(context, readerContext);
+ final DocValues lonVals = lonSource.getValues(context, readerContext);
final double latCenterRad = this.latCenter * DistanceUtils.DEGREES_TO_RADIANS;
final double lonCenterRad = this.lonCenter * DistanceUtils.DEGREES_TO_RADIANS;
final double latCenterRad_cos = this.latCenterRad_cos;