You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by bu...@apache.org on 2011/01/13 20:53:39 UTC
svn commit: r1058718 [15/18] - in /lucene/dev/branches/realtime_search: ./
lucene/ lucene/contrib/ lucene/contrib/ant/src/java/org/apache/lucene/ant/
lucene/contrib/ant/src/test/org/apache/lucene/ant/
lucene/contrib/benchmark/ lucene/contrib/demo/src/j...
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/DebugComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/DebugComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/DebugComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/DebugComponent.java Thu Jan 13 19:53:21 2011
@@ -115,7 +115,7 @@ public class DebugComponent extends Sear
@Override
public void finishStage(ResponseBuilder rb) {
if (rb.isDebug() && rb.stage == ResponseBuilder.STAGE_GET_FIELDS) {
- NamedList info = null;
+ NamedList<Object> info = null;
NamedList explain = new SimpleOrderedMap();
Map.Entry<String, Object>[] arr = new NamedList.NamedListEntry[rb.resultIds.size()];
@@ -140,11 +140,11 @@ public class DebugComponent extends Sear
}
if (rb.isDebugResults()) {
- explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap(arr));
+ explain = SolrPluginUtils.removeNulls(new SimpleOrderedMap<Object>(arr));
}
if (info == null) {
- info = new SimpleOrderedMap();
+ info = new SimpleOrderedMap<Object>();
}
if (rb.isDebugResults()) {
int idx = info.indexOf("explain",0);
@@ -196,9 +196,11 @@ public class DebugComponent extends Sear
if (source instanceof NamedList && dest instanceof NamedList) {
- NamedList tmp = new NamedList();
- NamedList sl = (NamedList)source;
- NamedList dl = (NamedList)dest;
+ NamedList<Object> tmp = new NamedList<Object>();
+ @SuppressWarnings("unchecked")
+ NamedList<Object> sl = (NamedList<Object>)source;
+ @SuppressWarnings("unchecked")
+ NamedList<Object> dl = (NamedList<Object>)dest;
for (int i=0; i<sl.size(); i++) {
String skey = sl.getName(i);
if (exclude != null && exclude.contains(skey)) continue;
@@ -228,7 +230,7 @@ public class DebugComponent extends Sear
}
// merge unlike elements in a list
- List t = new ArrayList();
+ List<Object> t = new ArrayList<Object>();
t.add(dest);
t.add(source);
return t;
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/FacetComponent.java Thu Jan 13 19:53:21 2011
@@ -78,7 +78,7 @@ public class FacetComponent extends Sear
params,
rb );
- NamedList counts = f.getFacetCounts();
+ NamedList<Object> counts = f.getFacetCounts();
String[] pivots = params.getParams( FacetParams.FACET_PIVOT );
if( pivots != null && pivots.length > 0 ) {
NamedList v = pivotHelper.process(rb, params, pivots);
@@ -264,7 +264,9 @@ public class FacetComponent extends Sear
int shardNum = rb.getShardNum(srsp.getShard());
NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
- fi.addExceptions((List)facet_counts.get("exception"));
+ @SuppressWarnings("unchecked")
+ List<String> excepts = (List<String>)facet_counts.get("exception");
+ fi.addExceptions(excepts);
// handle facet queries
NamedList facet_queries = (NamedList)facet_counts.get("facet_queries");
@@ -298,7 +300,10 @@ public class FacetComponent extends Sear
if (dff.limit <= 0) continue; // no need to check these facets for refinement
if (dff.minCount <= 1 && dff.sort.equals(FacetParams.FACET_SORT_INDEX)) continue;
- dff._toRefine = new List[rb.shards.length];
+ @SuppressWarnings("unchecked") // generic array's are anoying
+ List<String>[] tmp = (List<String>[]) new List[rb.shards.length];
+ dff._toRefine = tmp;
+
ShardFacetCount[] counts = dff.getCountSorted();
int ntop = Math.min(counts.length, dff.offset + dff.limit);
long smallestCount = counts.length == 0 ? 0 : counts[ntop-1].count;
@@ -353,8 +358,10 @@ public class FacetComponent extends Sear
// int shardNum = rb.getShardNum(srsp.shard);
NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");
-
- fi.addExceptions((List)facet_counts.get("exception"));
+
+ @SuppressWarnings("unchecked")
+ List<String> excepts = (List<String>)facet_counts.get("exception");
+ fi.addExceptions(excepts);
if (facet_fields == null) continue; // this can happen when there's an exception
@@ -384,23 +391,23 @@ public class FacetComponent extends Sear
FacetInfo fi = rb._facetInfo;
- NamedList facet_counts = new SimpleOrderedMap();
+ NamedList<Object> facet_counts = new SimpleOrderedMap<Object>();
if (fi.exceptionList != null) {
facet_counts.add("exception",fi.exceptionList);
}
- NamedList facet_queries = new SimpleOrderedMap();
+ NamedList<Number> facet_queries = new SimpleOrderedMap<Number>();
facet_counts.add("facet_queries",facet_queries);
for (QueryFacet qf : fi.queryFacets.values()) {
facet_queries.add(qf.getKey(), num(qf.count));
}
- NamedList facet_fields = new SimpleOrderedMap();
+ NamedList<Object> facet_fields = new SimpleOrderedMap<Object>();
facet_counts.add("facet_fields", facet_fields);
for (DistribFieldFacet dff : fi.facets.values()) {
- NamedList fieldCounts = new NamedList(); // order is more important for facets
+ NamedList<Object> fieldCounts = new NamedList<Object>(); // order is more important for facets
facet_fields.add(dff.getKey(), fieldCounts);
ShardFacetCount[] counts;
@@ -486,7 +493,7 @@ public class FacetComponent extends Sear
public static class FacetInfo {
public LinkedHashMap<String,QueryFacet> queryFacets;
public LinkedHashMap<String,DistribFieldFacet> facets;
- public List exceptionList;
+ public List<String> exceptionList;
void parse(SolrParams params, ResponseBuilder rb) {
queryFacets = new LinkedHashMap<String,QueryFacet>();
@@ -510,9 +517,9 @@ public class FacetComponent extends Sear
}
}
- public void addExceptions(List exceptions) {
+ public void addExceptions(List<String> exceptions) {
if (exceptions == null) return;
- if (exceptionList == null) exceptionList = new ArrayList();
+ if (exceptionList == null) exceptionList = new ArrayList<String>();
exceptionList.addAll(exceptions);
}
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/HighlightComponent.java Thu Jan 13 19:53:21 2011
@@ -113,7 +113,7 @@ public class HighlightComponent extends
if(highlightQuery != null) {
boolean rewrite = !(Boolean.valueOf(req.getParams().get(HighlightParams.USE_PHRASE_HIGHLIGHTER, "true")) && Boolean.valueOf(req.getParams().get(HighlightParams.HIGHLIGHT_MULTI_TERM, "true")));
- highlightQuery = rewrite ? highlightQuery.rewrite(req.getSearcher().getReader()) : highlightQuery;
+ highlightQuery = rewrite ? highlightQuery.rewrite(req.getSearcher().getIndexReader()) : highlightQuery;
}
// No highlighting if there is no query -- consider q.alt="*:*
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryComponent.java Thu Jan 13 19:53:21 2011
@@ -18,10 +18,13 @@
package org.apache.solr.handler.component;
import org.apache.lucene.document.Field;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader.ReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrDocument;
@@ -444,23 +447,21 @@ public class QueryComponent extends Sear
SortField[] sortFields = sort==null ? new SortField[]{SortField.FIELD_SCORE} : sort.getSort();
NamedList sortVals = new NamedList(); // order is important for the sort fields
Field field = new Field("dummy", "", Field.Store.YES, Field.Index.NO); // a dummy Field
-
- SolrIndexReader reader = searcher.getReader();
- SolrIndexReader[] readers = reader.getLeafReaders();
- SolrIndexReader subReader = reader;
- if (readers.length==1) {
+ ReaderContext topReaderContext = searcher.getTopReaderContext();
+ AtomicReaderContext[] leaves = ReaderUtil.leaves(topReaderContext);
+ AtomicReaderContext currentLeaf = null;
+ if (leaves.length==1) {
// if there is a single segment, use that subReader and avoid looking up each time
- subReader = readers[0];
- readers=null;
+ currentLeaf = leaves[0];
+ leaves=null;
}
- int[] offsets = reader.getLeafOffsets();
for (SortField sortField: sortFields) {
int type = sortField.getType();
if (type==SortField.SCORE || type==SortField.DOC) continue;
FieldComparator comparator = null;
- FieldComparator comparators[] = (readers==null) ? null : new FieldComparator[readers.length];
+ FieldComparator comparators[] = (leaves==null) ? null : new FieldComparator[leaves.length];
String fieldname = sortField.getField();
FieldType ft = fieldname==null ? null : req.getSchema().getFieldTypeNoEx(fieldname);
@@ -469,26 +470,24 @@ public class QueryComponent extends Sear
ArrayList<Object> vals = new ArrayList<Object>(docList.size());
DocIterator it = rb.getResults().docList.iterator();
- int offset = 0;
int idx = 0;
while(it.hasNext()) {
int doc = it.nextDoc();
- if (readers != null) {
- idx = SolrIndexReader.readerIndex(doc, offsets);
- subReader = readers[idx];
- offset = offsets[idx];
+ if (leaves != null) {
+ idx = ReaderUtil.subIndex(doc, leaves);
+ currentLeaf = leaves[idx];
comparator = comparators[idx];
}
if (comparator == null) {
comparator = sortField.getComparator(1,0);
- comparator = comparator.setNextReader(subReader, offset);
+ comparator = comparator.setNextReader(currentLeaf);
if (comparators != null)
comparators[idx] = comparator;
}
- doc -= offset; // adjust for what segment this is in
+ doc -= currentLeaf.docBase; // adjust for what segment this is in
comparator.copy(0, doc);
Object val = comparator.value(0);
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Thu Jan 13 19:53:21 2011
@@ -43,6 +43,7 @@ import org.apache.lucene.analysis.Analyz
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;
import org.apache.lucene.util.StringHelper;
@@ -199,7 +200,7 @@ public class QueryElevationComponent ext
RefCounted<SolrIndexSearcher> searchHolder = null;
try {
searchHolder = core.getNewestSearcher(false);
- IndexReader reader = searchHolder.get().getReader();
+ IndexReader reader = searchHolder.get().getIndexReader();
getElevationMap( reader, core );
} finally {
if (searchHolder != null) searchHolder.decref();
@@ -343,7 +344,7 @@ public class QueryElevationComponent ext
}
qstr = getAnalyzedQuery(qstr);
- IndexReader reader = req.getSearcher().getReader();
+ IndexReader reader = req.getSearcher().getIndexReader();
ElevationObj booster = null;
try {
booster = getElevationMap( reader, req.getCore() ).get( qstr );
@@ -503,8 +504,8 @@ class ElevationComparatorSource extends
values[slot] = docVal(doc);
}
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- idIndex = FieldCache.DEFAULT.getTermsIndex(reader, fieldname);
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ idIndex = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldname);
return this;
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/SpellCheckComponent.java Thu Jan 13 19:53:21 2011
@@ -143,7 +143,7 @@ public class SpellCheckComponent extends
boolean extendedResults = params.getBool(SPELLCHECK_EXTENDED_RESULTS,
false);
NamedList response = new SimpleOrderedMap();
- IndexReader reader = rb.req.getSearcher().getReader();
+ IndexReader reader = rb.req.getSearcher().getIndexReader();
boolean collate = params.getBool(SPELLCHECK_COLLATE, false);
float accuracy = params.getFloat(SPELLCHECK_ACCURACY, Float.MIN_VALUE);
SolrParams customParams = getCustomParams(getDictionaryName(params), params, shardRequest);
@@ -678,7 +678,7 @@ public class SpellCheckComponent extends
if (buildOnCommit) {
buildSpellIndex(newSearcher);
} else if (buildOnOptimize) {
- if (newSearcher.getReader().isOptimized()) {
+ if (newSearcher.getIndexReader().isOptimized()) {
buildSpellIndex(newSearcher);
} else {
LOG.info("Index is not optimized therefore skipping building spell check index for: " + checker.getDictionaryName());
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/StatsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/StatsComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/StatsComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/StatsComponent.java Thu Jan 13 19:53:21 2011
@@ -124,8 +124,8 @@ public class StatsComponent extends Sear
StatsInfo si = rb._statsInfo;
- NamedList stats = new SimpleOrderedMap();
- NamedList stats_fields = new SimpleOrderedMap();
+ NamedList<NamedList<Object>> stats = new SimpleOrderedMap<NamedList<Object>>();
+ NamedList<Object> stats_fields = new SimpleOrderedMap<Object>();
stats.add("stats_fields", stats_fields);
for (String field : si.statsFields.keySet()) {
NamedList stv = si.statsFields.get(field).getStatsValues();
@@ -209,8 +209,8 @@ class SimpleStats {
return res;
}
- public NamedList getStatsFields() throws IOException {
- NamedList<NamedList<Number>> res = new SimpleOrderedMap<NamedList<Number>>();
+ public NamedList<Object> getStatsFields() throws IOException {
+ NamedList<Object> res = new SimpleOrderedMap<Object>();
String[] statsFs = params.getParams(StatsParams.STATS_FIELD);
boolean isShard = params.getBool(ShardParams.IS_SHARD, false);
if (null != statsFs) {
@@ -221,7 +221,7 @@ class SimpleStats {
}
SchemaField sf = searcher.getSchema().getField(f);
FieldType ft = sf.getType();
- NamedList stv;
+ NamedList<?> stv;
// Currently, only UnInvertedField can deal with multi-part trie fields
String prefix = TrieField.getMainValuePrefix(ft);
@@ -243,12 +243,12 @@ class SimpleStats {
return res;
}
- public NamedList getFieldCacheStats(String fieldName, String[] facet ) {
+ public NamedList<?> getFieldCacheStats(String fieldName, String[] facet ) {
FieldType ft = searcher.getSchema().getFieldType(fieldName);
FieldCache.DocTermsIndex si = null;
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), fieldName);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), fieldName);
}
catch (IOException e) {
throw new RuntimeException( "failed to open field cache for: "+fieldName, e );
@@ -263,7 +263,7 @@ class SimpleStats {
for( String f : facet ) {
ft = searcher.getSchema().getFieldType(f);
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), f);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), f);
}
catch (IOException e) {
throw new RuntimeException( "failed to open field cache for: "+f, e );
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermVectorComponent.java Thu Jan 13 19:53:21 2011
@@ -77,7 +77,7 @@ public class TermVectorComponent extends
return;
}
- NamedList termVectors = new NamedList();
+ NamedList<Object> termVectors = new NamedList<Object>();
rb.rsp.add(TERM_VECTORS, termVectors);
FieldOptions allFields = new FieldOptions();
//figure out what options we have, and try to get the appropriate vector
@@ -106,7 +106,7 @@ public class TermVectorComponent extends
IndexSchema schema = rb.req.getSchema();
//Build up our per field mapping
Map<String, FieldOptions> fieldOptions = new HashMap<String, FieldOptions>();
- NamedList warnings = new NamedList();
+ NamedList<List<String>> warnings = new NamedList<List<String>>();
List<String> noTV = new ArrayList<String>();
List<String> noPos = new ArrayList<String>();
List<String> noOff = new ArrayList<String>();
@@ -174,7 +174,7 @@ public class TermVectorComponent extends
}
SolrIndexSearcher searcher = rb.req.getSearcher();
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
//the TVMapper is a TermVectorMapper which can be used to optimize loading of Term Vectors
SchemaField keyField = schema.getUniqueKeyField();
String uniqFieldName = null;
@@ -187,7 +187,7 @@ public class TermVectorComponent extends
mapper.fieldOptions = allFields; //this will only stay set if fieldOptions.isEmpty() (in other words, only if the user didn't set any fields)
while (iter.hasNext()) {
Integer docId = iter.next();
- NamedList docNL = new NamedList();
+ NamedList<Object> docNL = new NamedList<Object>();
mapper.docNL = docNL;
termVectors.add("doc-" + docId, docNL);
@@ -272,7 +272,7 @@ public class TermVectorComponent extends
private static class TVMapper extends TermVectorMapper {
private IndexReader reader;
- private NamedList docNL;
+ private NamedList<Object> docNL;
//needs to be set for each new field
FieldOptions fieldOptions;
@@ -280,7 +280,7 @@ public class TermVectorComponent extends
//internal vars not passed in by construction
private boolean useOffsets, usePositions;
//private Map<String, Integer> idfCache;
- private NamedList fieldNL;
+ private NamedList<Object> fieldNL;
private Term currentTerm;
@@ -289,34 +289,34 @@ public class TermVectorComponent extends
}
public void map(BytesRef term, int frequency, TermVectorOffsetInfo[] offsets, int[] positions) {
- NamedList termInfo = new NamedList();
- fieldNL.add(term.utf8ToString(), termInfo);
- if (fieldOptions.termFreq == true) {
- termInfo.add("tf", frequency);
- }
- if (useOffsets == true) {
- NamedList theOffsets = new NamedList();
- termInfo.add("offsets", theOffsets);
- for (int i = 0; i < offsets.length; i++) {
- TermVectorOffsetInfo offset = offsets[i];
- theOffsets.add("start", offset.getStartOffset());
- theOffsets.add("end", offset.getEndOffset());
- }
- }
- if (usePositions == true) {
- NamedList positionsNL = new NamedList();
- for (int i = 0; i < positions.length; i++) {
- positionsNL.add("position", positions[i]);
- }
- termInfo.add("positions", positionsNL);
- }
- if (fieldOptions.docFreq == true) {
- termInfo.add("df", getDocFreq(term));
+ NamedList<Object> termInfo = new NamedList<Object>();
+ fieldNL.add(term.utf8ToString(), termInfo);
+ if (fieldOptions.termFreq == true) {
+ termInfo.add("tf", frequency);
+ }
+ if (useOffsets == true) {
+ NamedList<Number> theOffsets = new NamedList<Number>();
+ termInfo.add("offsets", theOffsets);
+ for (int i = 0; i < offsets.length; i++) {
+ TermVectorOffsetInfo offset = offsets[i];
+ theOffsets.add("start", offset.getStartOffset());
+ theOffsets.add("end", offset.getEndOffset());
}
- if (fieldOptions.tfIdf == true) {
- double tfIdfVal = ((double) frequency) / getDocFreq(term);
- termInfo.add("tf-idf", tfIdfVal);
+ }
+ if (usePositions == true) {
+ NamedList<Integer> positionsNL = new NamedList<Integer>();
+ for (int i = 0; i < positions.length; i++) {
+ positionsNL.add("position", positions[i]);
}
+ termInfo.add("positions", positionsNL);
+ }
+ if (fieldOptions.docFreq == true) {
+ termInfo.add("df", getDocFreq(term));
+ }
+ if (fieldOptions.tfIdf == true) {
+ double tfIdfVal = ((double) frequency) / getDocFreq(term);
+ termInfo.add("tf-idf", tfIdfVal);
+ }
}
private int getDocFreq(BytesRef term) {
@@ -343,7 +343,7 @@ public class TermVectorComponent extends
}
useOffsets = storeOffsets && fieldOptions.offsets;
usePositions = storePositions && fieldOptions.positions;
- fieldNL = new NamedList();
+ fieldNL = new NamedList<Object>();
docNL.add(field, fieldNL);
}
@@ -394,4 +394,4 @@ public class TermVectorComponent extends
class FieldOptions {
String fieldName;
boolean termFreq, positions, offsets, docFreq, tfIdf;
-}
\ No newline at end of file
+}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermsComponent.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermsComponent.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/handler/component/TermsComponent.java Thu Jan 13 19:53:21 2011
@@ -27,7 +27,6 @@ import org.apache.solr.common.util.StrUt
import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.StrField;
import org.apache.solr.request.SimpleFacets.CountPair;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.util.BoundedTreeSet;
import org.apache.solr.client.solrj.response.TermsResponse;
@@ -75,7 +74,7 @@ public class TermsComponent extends Sear
String[] fields = params.getParams(TermsParams.TERMS_FIELD);
- NamedList termsResult = new SimpleOrderedMap();
+ NamedList<Object> termsResult = new SimpleOrderedMap<Object>();
rb.rsp.add("terms", termsResult);
if (fields == null || fields.length==0) return;
@@ -103,11 +102,11 @@ public class TermsComponent extends Sear
boolean raw = params.getBool(TermsParams.TERMS_RAW, false);
- SolrIndexReader sr = rb.req.getSearcher().getReader();
- Fields lfields = MultiFields.getFields(sr);
+ final IndexReader indexReader = rb.req.getSearcher().getTopReaderContext().reader;
+ Fields lfields = MultiFields.getFields(indexReader);
for (String field : fields) {
- NamedList fieldTerms = new NamedList();
+ NamedList<Integer> fieldTerms = new NamedList<Integer>();
termsResult.add(field, fieldTerms);
Terms terms = lfields == null ? null : lfields.terms(field);
@@ -273,7 +272,9 @@ public class TermsComponent extends Sear
TermsHelper th = rb._termsHelper;
if (th != null) {
for (ShardResponse srsp : sreq.responses) {
- th.parse((NamedList) srsp.getSolrResponse().getResponse().get("terms"));
+ @SuppressWarnings("unchecked")
+ NamedList<NamedList<Number>> terms = (NamedList<NamedList<Number>>) srsp.getSolrResponse().getResponse().get("terms");
+ th.parse(terms);
}
}
}
@@ -331,7 +332,7 @@ public class TermsComponent extends Sear
}
}
- public void parse(NamedList terms) {
+ public void parse(NamedList<NamedList<Number>> terms) {
// exit if there is no terms
if (terms == null) {
return;
@@ -364,7 +365,7 @@ public class TermsComponent extends Sear
}
public NamedList buildResponse() {
- NamedList response = new SimpleOrderedMap();
+ NamedList<Object> response = new SimpleOrderedMap<Object>();
// determine if we are going index or count sort
boolean sort = !TermsParams.TERMS_SORT_INDEX.equals(params.get(
@@ -393,7 +394,7 @@ public class TermsComponent extends Sear
// loop though each field we want terms from
for (String key : fieldmap.keySet()) {
- NamedList fieldterms = new SimpleOrderedMap();
+ NamedList<Number> fieldterms = new SimpleOrderedMap<Number>();
TermsResponse.Term[] data = null;
if (sort) {
data = getCountSorted(fieldmap.get(key));
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Thu Jan 13 19:53:21 2011
@@ -216,7 +216,7 @@ public class DefaultSolrHighlighter exte
private Scorer getQueryScorer(Query query, String fieldName, SolrQueryRequest request) {
boolean reqFieldMatch = request.getParams().getFieldBool(fieldName, HighlightParams.FIELD_MATCH, false);
if (reqFieldMatch) {
- return new QueryTermScorer(query, request.getSearcher().getReader(), fieldName);
+ return new QueryTermScorer(query, request.getSearcher().getIndexReader(), fieldName);
}
else {
return new QueryTermScorer(query);
@@ -415,7 +415,7 @@ public class DefaultSolrHighlighter exte
TermOffsetsTokenStream tots = null; // to be non-null iff we're using TermOffsets optimization
try {
- TokenStream tvStream = TokenSources.getTokenStream(searcher.getReader(), docId, fieldName);
+ TokenStream tvStream = TokenSources.getTokenStream(searcher.getIndexReader(), docId, fieldName);
if (tvStream != null) {
tots = new TermOffsetsTokenStream(tvStream);
}
@@ -503,7 +503,7 @@ public class DefaultSolrHighlighter exte
String fieldName ) throws IOException {
SolrParams params = req.getParams();
SolrFragmentsBuilder solrFb = getSolrFragmentsBuilder( fieldName, params );
- String[] snippets = highlighter.getBestFragments( fieldQuery, req.getSearcher().getReader(), docId, fieldName,
+ String[] snippets = highlighter.getBestFragments( fieldQuery, req.getSearcher().getIndexReader(), docId, fieldName,
params.getFieldInt( fieldName, HighlightParams.FRAGSIZE, 100 ),
params.getFieldInt( fieldName, HighlightParams.SNIPPETS, 1 ),
getFragListBuilder( fieldName, params ),
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java Thu Jan 13 19:53:21 2011
@@ -1,5 +1,6 @@
package org.apache.solr.request;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.DocIdSetIterator;
@@ -7,6 +8,7 @@ import org.apache.lucene.search.FieldCac
import org.apache.lucene.search.Filter;
import org.apache.lucene.util.PriorityQueue;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.packed.Direct16;
import org.apache.lucene.util.packed.Direct32;
import org.apache.lucene.util.packed.Direct8;
@@ -16,7 +18,6 @@ import org.apache.solr.common.params.Fac
import org.apache.solr.common.util.NamedList;
import org.apache.solr.schema.FieldType;
import org.apache.solr.search.DocSet;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.BoundedTreeSet;
import org.apache.solr.util.ByteUtils;
@@ -60,17 +61,14 @@ class PerSegmentSingleValuedFaceting {
}
- NamedList getFacetCounts(Executor executor) throws IOException {
+ NamedList<Integer> getFacetCounts(Executor executor) throws IOException {
CompletionService<SegFacet> completionService = new ExecutorCompletionService<SegFacet>(executor);
// reuse the translation logic to go from top level set to per-segment set
baseSet = docs.getTopFilter();
- SolrIndexReader topReader = searcher.getReader();
- final SolrIndexReader[] leafReaders = topReader.getLeafReaders();
- int[] offsets = topReader.getLeafOffsets();
-
+ final AtomicReaderContext[] leaves = ReaderUtil.leaves(searcher.getTopReaderContext());
// The list of pending tasks that aren't immediately submitted
// TODO: Is there a completion service, or a delegating executor that can
// limit the number of concurrent tasks submitted to a bigger executor?
@@ -78,8 +76,8 @@ class PerSegmentSingleValuedFaceting {
int threads = nThreads <= 0 ? Integer.MAX_VALUE : nThreads;
- for (int i=0; i<leafReaders.length; i++) {
- final SegFacet segFacet = new SegFacet(leafReaders[i], offsets[i]);
+ for (int i=0; i<leaves.length; i++) {
+ final SegFacet segFacet = new SegFacet(leaves[i]);
Callable<SegFacet> task = new Callable<SegFacet>() {
public SegFacet call() throws Exception {
@@ -101,7 +99,7 @@ class PerSegmentSingleValuedFaceting {
// now merge the per-segment results
PriorityQueue<SegFacet> queue = new PriorityQueue<SegFacet>() {
{
- initialize(leafReaders.length);
+ initialize(leaves.length);
}
@Override
protected boolean lessThan(SegFacet a, SegFacet b) {
@@ -112,7 +110,7 @@ class PerSegmentSingleValuedFaceting {
boolean hasMissingCount=false;
int missingCount=0;
- for (int i=0; i<leafReaders.length; i++) {
+ for (int i=0; i<leaves.length; i++) {
SegFacet seg = null;
try {
@@ -189,7 +187,7 @@ class PerSegmentSingleValuedFaceting {
if (stop) break;
}
- NamedList res = collector.getFacetCounts();
+ NamedList<Integer> res = collector.getFacetCounts();
// convert labels to readable form
FieldType ft = searcher.getSchema().getFieldType(fieldName);
@@ -209,12 +207,9 @@ class PerSegmentSingleValuedFaceting {
}
class SegFacet {
- SolrIndexReader reader;
- int readerOffset;
-
- SegFacet(SolrIndexReader reader, int readerOffset) {
- this.reader = reader;
- this.readerOffset = readerOffset;
+ AtomicReaderContext context;
+ SegFacet(AtomicReaderContext context) {
+ this.context = context;
}
FieldCache.DocTermsIndex si;
@@ -228,7 +223,7 @@ class PerSegmentSingleValuedFaceting {
BytesRef tempBR = new BytesRef();
void countTerms() throws IOException {
- si = FieldCache.DEFAULT.getTermsIndex(reader, fieldName);
+ si = FieldCache.DEFAULT.getTermsIndex(context.reader, fieldName);
// SolrCore.log.info("reader= " + reader + " FC=" + System.identityHashCode(si));
if (prefix!=null) {
@@ -250,7 +245,7 @@ class PerSegmentSingleValuedFaceting {
// count collection array only needs to be as big as the number of terms we are
// going to collect counts for.
final int[] counts = this.counts = new int[nTerms];
- DocIdSet idSet = baseSet.getDocIdSet(reader);
+ DocIdSet idSet = baseSet.getDocIdSet(context);
DocIdSetIterator iter = idSet.iterator();
@@ -324,7 +319,7 @@ class PerSegmentSingleValuedFaceting {
abstract class FacetCollector {
/*** return true to stop collection */
public abstract boolean collect(BytesRef term, int count);
- public abstract NamedList getFacetCounts();
+ public abstract NamedList<Integer> getFacetCounts();
}
@@ -358,8 +353,8 @@ class CountSortedFacetCollector extends
}
@Override
- public NamedList getFacetCounts() {
- NamedList res = new NamedList();
+ public NamedList<Integer> getFacetCounts() {
+ NamedList<Integer> res = new NamedList<Integer>();
int off=offset;
int lim=limit>=0 ? limit : Integer.MAX_VALUE;
// now select the right page from the results
@@ -377,7 +372,7 @@ class IndexSortedFacetCollector extends
int offset;
int limit;
final int mincount;
- final NamedList res = new NamedList();
+ final NamedList<Integer> res = new NamedList<Integer>();
public IndexSortedFacetCollector(int offset, int limit, int mincount) {
@@ -406,7 +401,7 @@ class IndexSortedFacetCollector extends
}
@Override
- public NamedList getFacetCounts() {
+ public NamedList<Integer> getFacetCounts() {
return res;
}
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/SimpleFacets.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/SimpleFacets.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/SimpleFacets.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/SimpleFacets.java Thu Jan 13 19:53:21 2011
@@ -70,7 +70,7 @@ public class SimpleFacets {
protected SolrQueryRequest req;
protected ResponseBuilder rb;
- protected SimpleOrderedMap facetResponse;
+ protected SimpleOrderedMap<Object> facetResponse;
// per-facet values
SolrParams localParams; // localParams on this particular facet command
@@ -175,13 +175,13 @@ public class SimpleFacets {
* @see FacetParams#FACET
* @return a NamedList of Facet Count info or null
*/
- public NamedList getFacetCounts() {
+ public NamedList<Object> getFacetCounts() {
// if someone called this method, benefit of the doubt: assume true
if (!params.getBool(FacetParams.FACET,true))
return null;
- facetResponse = new SimpleOrderedMap();
+ facetResponse = new SimpleOrderedMap<Object>();
try {
facetResponse.add("facet_queries", getFacetQueryCounts());
facetResponse.add("facet_fields", getFacetFieldCounts());
@@ -196,9 +196,11 @@ public class SimpleFacets {
}
public void addException(String msg, Exception e) {
- List exceptions = (List)facetResponse.get("exception");
+ @SuppressWarnings("unchecked")
+ List<String> exceptions = (List<String>)facetResponse.get("exception");
+
if (exceptions == null) {
- exceptions = new ArrayList();
+ exceptions = new ArrayList<String>();
facetResponse.add("exception", exceptions);
}
@@ -212,9 +214,9 @@ public class SimpleFacets {
*
* @see FacetParams#FACET_QUERY
*/
- public NamedList getFacetQueryCounts() throws IOException,ParseException {
+ public NamedList<Integer> getFacetQueryCounts() throws IOException,ParseException {
- NamedList res = new SimpleOrderedMap();
+ NamedList<Integer> res = new SimpleOrderedMap<Integer>();
/* Ignore CommonParams.DF - could have init param facet.query assuming
* the schema default with query param DF intented to only affect Q.
@@ -246,10 +248,10 @@ public class SimpleFacets {
}
- public NamedList getTermCounts(String field) throws IOException {
+ public NamedList<Integer> getTermCounts(String field) throws IOException {
int offset = params.getFieldInt(field, FacetParams.FACET_OFFSET, 0);
int limit = params.getFieldInt(field, FacetParams.FACET_LIMIT, 100);
- if (limit == 0) return new NamedList();
+ if (limit == 0) return new NamedList<Integer>();
Integer mincount = params.getFieldInt(field, FacetParams.FACET_MINCOUNT);
if (mincount==null) {
Boolean zeros = params.getFieldBool(field, FacetParams.FACET_ZEROS);
@@ -263,7 +265,7 @@ public class SimpleFacets {
String prefix = params.getFieldParam(field,FacetParams.FACET_PREFIX);
- NamedList counts;
+ NamedList<Integer> counts;
SchemaField sf = searcher.getSchema().getField(field);
FieldType ft = sf.getType();
@@ -335,10 +337,10 @@ public class SimpleFacets {
* @see #getFieldMissingCount
* @see #getFacetTermEnumCounts
*/
- public NamedList getFacetFieldCounts()
+ public NamedList<Object> getFacetFieldCounts()
throws IOException, ParseException {
- NamedList res = new SimpleOrderedMap();
+ NamedList<Object> res = new SimpleOrderedMap<Object>();
String[] facetFs = params.getParams(FacetParams.FACET_FIELD);
if (null != facetFs) {
for (String f : facetFs) {
@@ -361,10 +363,10 @@ public class SimpleFacets {
}
- private NamedList getListedTermCounts(String field, String termList) throws IOException {
+ private NamedList<Integer> getListedTermCounts(String field, String termList) throws IOException {
FieldType ft = searcher.getSchema().getFieldType(field);
List<String> terms = StrUtils.splitSmart(termList, ",", true);
- NamedList res = new NamedList();
+ NamedList<Integer> res = new NamedList<Integer>();
Term t = new Term(field);
for (String term : terms) {
String internal = ft.toInternal(term);
@@ -394,7 +396,7 @@ public class SimpleFacets {
* Use the Lucene FieldCache to get counts for each unique field value in <code>docs</code>.
* The field must have at most one indexed token per document.
*/
- public static NamedList getFieldCacheCounts(SolrIndexSearcher searcher, DocSet docs, String fieldName, int offset, int limit, int mincount, boolean missing, String sort, String prefix) throws IOException {
+ public static NamedList<Integer> getFieldCacheCounts(SolrIndexSearcher searcher, DocSet docs, String fieldName, int offset, int limit, int mincount, boolean missing, String sort, String prefix) throws IOException {
// TODO: If the number of terms is high compared to docs.size(), and zeros==false,
// we should use an alternate strategy to avoid
// 1) creating another huge int[] for the counts
@@ -409,9 +411,9 @@ public class SimpleFacets {
// trying to pass all the various params around.
FieldType ft = searcher.getSchema().getFieldType(fieldName);
- NamedList res = new NamedList();
+ NamedList<Integer> res = new NamedList<Integer>();
- FieldCache.DocTermsIndex si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), fieldName);
+ FieldCache.DocTermsIndex si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), fieldName);
final BytesRef prefixRef;
if (prefix == null) {
@@ -589,7 +591,7 @@ public class SimpleFacets {
* @see FacetParams#FACET_ZEROS
* @see FacetParams#FACET_MISSING
*/
- public NamedList getFacetTermEnumCounts(SolrIndexSearcher searcher, DocSet docs, String field, int offset, int limit, int mincount, boolean missing, String sort, String prefix)
+ public NamedList<Integer> getFacetTermEnumCounts(SolrIndexSearcher searcher, DocSet docs, String field, int offset, int limit, int mincount, boolean missing, String sort, String prefix)
throws IOException {
/* :TODO: potential optimization...
@@ -609,13 +611,13 @@ public class SimpleFacets {
IndexSchema schema = searcher.getSchema();
- IndexReader r = searcher.getReader();
+ IndexReader r = searcher.getIndexReader();
FieldType ft = schema.getFieldType(field);
boolean sortByCount = sort.equals("count") || sort.equals("true");
final int maxsize = limit>=0 ? offset+limit : Integer.MAX_VALUE-1;
final BoundedTreeSet<CountPair<BytesRef,Integer>> queue = sortByCount ? new BoundedTreeSet<CountPair<BytesRef,Integer>>(maxsize) : null;
- final NamedList res = new NamedList();
+ final NamedList<Integer> res = new NamedList<Integer>();
int min=mincount-1; // the smallest value in the top 'N' values
int off=offset;
@@ -776,10 +778,10 @@ public class SimpleFacets {
* @see FacetParams#FACET_DATE
*/
- public NamedList getFacetDateCounts()
+ public NamedList<Object> getFacetDateCounts()
throws IOException, ParseException {
- final NamedList resOuter = new SimpleOrderedMap();
+ final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_DATE);
if (null == fields || 0 == fields.length) return resOuter;
@@ -797,7 +799,7 @@ public class SimpleFacets {
return resOuter;
}
- public void getFacetDateCounts(String dateFacet, NamedList resOuter)
+ public void getFacetDateCounts(String dateFacet, NamedList<Object> resOuter)
throws IOException, ParseException {
final IndexSchema schema = searcher.getSchema();
@@ -806,7 +808,7 @@ public class SimpleFacets {
String f = facetValue;
- final NamedList resInner = new SimpleOrderedMap();
+ final NamedList<Object> resInner = new SimpleOrderedMap<Object>();
resOuter.add(key, resInner);
final SchemaField sf = schema.getField(f);
if (! (sf.getType() instanceof DateField)) {
@@ -948,8 +950,8 @@ public class SimpleFacets {
* @see FacetParams#FACET_RANGE
*/
- public NamedList getFacetRangeCounts() {
- final NamedList resOuter = new SimpleOrderedMap();
+ public NamedList<Object> getFacetRangeCounts() {
+ final NamedList<Object> resOuter = new SimpleOrderedMap<Object>();
final String[] fields = params.getParams(FacetParams.FACET_RANGE);
if (null == fields || 0 == fields.length) return resOuter;
@@ -967,7 +969,7 @@ public class SimpleFacets {
return resOuter;
}
- void getFacetRangeCounts(String facetRange, NamedList resOuter)
+ void getFacetRangeCounts(String facetRange, NamedList<Object> resOuter)
throws IOException, ParseException {
final IndexSchema schema = searcher.getSchema();
@@ -978,7 +980,7 @@ public class SimpleFacets {
final SchemaField sf = schema.getField(f);
final FieldType ft = sf.getType();
- RangeEndpointCalculator calc = null;
+ RangeEndpointCalculator<?> calc = null;
if (ft instanceof TrieField) {
final TrieField trie = (TrieField)ft;
@@ -1025,8 +1027,8 @@ public class SimpleFacets {
final RangeEndpointCalculator<T> calc) throws IOException {
final String f = sf.getName();
- final NamedList res = new SimpleOrderedMap();
- final NamedList counts = new SimpleOrderedMap();
+ final NamedList<Object> res = new SimpleOrderedMap<Object>();
+ final NamedList<Integer> counts = new SimpleOrderedMap<Integer>();
res.add("counts", counts);
final T start = calc.getValue(required.getFieldParam(f,FacetParams.FACET_RANGE_START));
@@ -1176,8 +1178,9 @@ public class SimpleFacets {
return key.hashCode() ^ val.hashCode();
}
public boolean equals(Object o) {
- return (o instanceof CountPair)
- && (0 == this.compareTo((CountPair<K,V>) o));
+ if (! (o instanceof CountPair)) return false;
+ CountPair<?,?> that = (CountPair<?,?>) o;
+ return (this.key.equals(that.key) && this.val.equals(that.val));
}
public int compareTo(CountPair<K,V> o) {
int vc = o.val.compareTo(val);
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/UnInvertedField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/UnInvertedField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/UnInvertedField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/request/UnInvertedField.java Thu Jan 13 19:53:21 2011
@@ -192,7 +192,7 @@ public class UnInvertedField {
private void uninvert(SolrIndexSearcher searcher) throws IOException {
long startTime = System.currentTimeMillis();
- IndexReader reader = searcher.getReader();
+ IndexReader reader = searcher.getIndexReader();
int maxDoc = reader.maxDoc();
int[] index = new int[maxDoc]; // immediate term numbers, or the index into the byte[] representing the last number
@@ -457,12 +457,12 @@ public class UnInvertedField {
- public NamedList getCounts(SolrIndexSearcher searcher, DocSet baseDocs, int offset, int limit, Integer mincount, boolean missing, String sort, String prefix) throws IOException {
+ public NamedList<Integer> getCounts(SolrIndexSearcher searcher, DocSet baseDocs, int offset, int limit, Integer mincount, boolean missing, String sort, String prefix) throws IOException {
use.incrementAndGet();
FieldType ft = searcher.getSchema().getFieldType(field);
- NamedList res = new NamedList(); // order is important
+ NamedList<Integer> res = new NamedList<Integer>(); // order is important
DocSet docs = baseDocs;
int baseSize = docs.size();
@@ -481,7 +481,7 @@ public class UnInvertedField {
int startTerm = 0;
int endTerm = numTermsInField; // one past the end
- NumberedTermsEnum te = ti.getEnumerator(searcher.getReader());
+ NumberedTermsEnum te = ti.getEnumerator(searcher.getIndexReader());
if (prefix != null && prefix.length() > 0) {
BytesRef prefixBr = new BytesRef(prefix);
te.skipTo(prefixBr);
@@ -719,7 +719,7 @@ public class UnInvertedField {
for (String f : facet) {
FieldType facet_ft = searcher.getSchema().getFieldType(f);
try {
- si = FieldCache.DEFAULT.getTermsIndex(searcher.getReader(), f);
+ si = FieldCache.DEFAULT.getTermsIndex(searcher.getIndexReader(), f);
}
catch (IOException e) {
throw new RuntimeException("failed to open field cache for: " + f, e);
@@ -731,7 +731,7 @@ public class UnInvertedField {
final int[] index = this.index;
final int[] counts = new int[numTermsInField];//keep track of the number of times we see each word in the field for all the documents in the docset
- NumberedTermsEnum te = ti.getEnumerator(searcher.getReader());
+ NumberedTermsEnum te = ti.getEnumerator(searcher.getIndexReader());
boolean doNegative = false;
@@ -900,15 +900,15 @@ public class UnInvertedField {
//////////////////////////// caching /////////////////////////////
//////////////////////////////////////////////////////////////////
public static UnInvertedField getUnInvertedField(String field, SolrIndexSearcher searcher) throws IOException {
- SolrCache cache = searcher.getFieldValueCache();
+ SolrCache<String,UnInvertedField> cache = searcher.getFieldValueCache();
if (cache == null) {
return new UnInvertedField(field, searcher);
}
- UnInvertedField uif = (UnInvertedField)cache.get(field);
+ UnInvertedField uif = cache.get(field);
if (uif == null) {
synchronized (cache) {
- uif = (UnInvertedField)cache.get(field);
+ uif = cache.get(field);
if (uif == null) {
uif = new UnInvertedField(field, searcher);
cache.put(field, uif);
@@ -918,7 +918,6 @@ public class UnInvertedField {
return uif;
}
-
}
@@ -1001,10 +1000,6 @@ class NumberedTermsEnum extends TermsEnu
return tenum.docFreq();
}
- @Override
- public void cacheCurrentTerm() {
- throw new UnsupportedOperationException();
- }
public BytesRef skipTo(BytesRef target) throws IOException {
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/response/SolrQueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/response/SolrQueryResponse.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/response/SolrQueryResponse.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/response/SolrQueryResponse.java Thu Jan 13 19:53:21 2011
@@ -66,12 +66,12 @@ public class SolrQueryResponse {
* @see #setAllValues
* @see <a href="#returnable_data">Note on Returnable Data</a>
*/
- protected NamedList values = new SimpleOrderedMap();
+ protected NamedList<Object> values = new SimpleOrderedMap<Object>();
/**
* Container for storing information that should be logged by Solr before returning.
*/
- protected NamedList toLog = new SimpleOrderedMap();
+ protected NamedList<Object> toLog = new SimpleOrderedMap<Object>();
protected Set<String> defaultReturnFields;
@@ -103,7 +103,7 @@ public class SolrQueryResponse {
* Sets data to be returned in this response
* @see <a href="#returnable_data">Note on Returnable Data</a>
*/
- public void setAllValues(NamedList nameValuePairs) {
+ public void setAllValues(NamedList<Object> nameValuePairs) {
values=nameValuePairs;
}
@@ -189,7 +189,8 @@ public class SolrQueryResponse {
}
/** Repsonse header to be logged */
- public NamedList getResponseHeader() {
+ public NamedList<Object> getResponseHeader() {
+ @SuppressWarnings("unchecked")
SimpleOrderedMap<Object> header = (SimpleOrderedMap<Object>) values.get("responseHeader");
return header;
}
@@ -207,7 +208,7 @@ public class SolrQueryResponse {
*
* @return things to log
*/
- public NamedList getToLog() {
+ public NamedList<Object> getToLog() {
return toLog;
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/BinaryField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/BinaryField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/BinaryField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/BinaryField.java Thu Jan 13 19:53:21 2011
@@ -50,7 +50,7 @@ public class BinaryField extends FieldTy
return ByteBuffer.wrap(f.getBinaryValue(), f.getBinaryOffset(), f.getBinaryLength() ) ;
}
- public Field createField(SchemaField field, Object val, float boost) {
+ public Fieldable createField(SchemaField field, Object val, float boost) {
if (val == null) return null;
if (!field.stored()) {
log.trace("Ignoring unstored binary field: " + field);
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/DateField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/DateField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/DateField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/DateField.java Thu Jan 13 19:53:21 2011
@@ -18,7 +18,7 @@
package org.apache.solr.schema;
import org.apache.lucene.document.Fieldable;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.SortField;
import org.apache.lucene.search.TermRangeQuery;
@@ -427,8 +427,8 @@ class DateFieldSource extends FieldCache
return "date(" + 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) {
// needed for frange queries to work properly
return ft.toInternal(readableValue);
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/FieldType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/FieldType.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/FieldType.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/FieldType.java Thu Jan 13 19:53:21 2011
@@ -221,7 +221,7 @@ public abstract class FieldType extends
*
*
*/
- public Field createField(SchemaField field, String externalVal, float boost) {
+ public Fieldable createField(SchemaField field, String externalVal, float boost) {
if (!field.indexed() && !field.stored()) {
if (log.isTraceEnabled())
log.trace("Ignoring unindexed/unstored field: " + field);
@@ -252,9 +252,9 @@ public abstract class FieldType extends
* @param omitNorms true if norms should be omitted
* @param omitTFPos true if term freq and position should be omitted.
* @param boost The boost value
- * @return the {@link org.apache.lucene.document.Field}.
+ * @return the {@link org.apache.lucene.document.Fieldable}.
*/
- protected Field createField(String name, String val, Field.Store storage, Field.Index index,
+ protected Fieldable createField(String name, String val, Field.Store storage, Field.Index index,
Field.TermVector vec, boolean omitNorms, boolean omitTFPos, float boost){
Field f = new Field(name,
val,
@@ -278,7 +278,7 @@ public abstract class FieldType extends
* @see #isPolyField()
*/
public Fieldable[] createFields(SchemaField field, String externalVal, float boost) {
- Field f = createField( field, externalVal, boost);
+ Fieldable f = createField( field, externalVal, boost);
return f==null ? new Fieldable[]{} : new Fieldable[]{f};
}
@@ -341,7 +341,7 @@ public abstract class FieldType extends
public Object toObject(SchemaField sf, BytesRef term) {
CharArr ext = new CharArr(term.length);
indexedToReadable(term, ext);
- Field f = createField(sf, ext.toString(), 1.0f);
+ Fieldable f = createField(sf, ext.toString(), 1.0f);
return toObject(f);
}
@@ -511,7 +511,6 @@ public abstract class FieldType extends
* @param maxInclusive whether the maximum of the range is inclusive or not
* @return a Query instance to perform range search according to given parameters
*
- * @see org.apache.solr.search.SolrQueryParser#getRangeQuery(String, String, String, boolean)
*/
public Query getRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive) {
// constant score mode is now enabled per default
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/LatLonType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/LatLonType.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/LatLonType.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/LatLonType.java Thu Jan 13 19:53:21 2011
@@ -19,7 +19,7 @@ package org.apache.solr.schema;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.index.IndexReader;
-import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.*;
import org.apache.lucene.spatial.DistanceUtils;
import org.apache.lucene.spatial.tier.InvalidGeoException;
@@ -27,7 +27,6 @@ import org.apache.lucene.util.Bits;
import org.apache.solr.common.SolrException;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.search.QParser;
-import org.apache.solr.search.SolrIndexReader;
import org.apache.solr.search.SpatialOptions;
import org.apache.solr.search.function.DocValues;
import org.apache.solr.search.function.ValueSource;
@@ -281,7 +280,7 @@ public class LatLonType extends Abstract
//It never makes sense to create a single field, so make it impossible to happen
@Override
- public Field createField(SchemaField field, String externalVal, float boost) {
+ public Fieldable createField(SchemaField field, String externalVal, float boost) {
throw new UnsupportedOperationException("LatLonType uses multiple fields. field=" + field.getName());
}
@@ -334,16 +333,16 @@ class SpatialDistanceQuery extends Query
public void extractTerms(Set terms) {}
protected class SpatialWeight extends Weight {
- protected Searcher searcher;
+ protected IndexSearcher searcher;
protected float queryNorm;
protected float queryWeight;
protected Map latContext;
protected Map lonContext;
- public SpatialWeight(Searcher searcher) throws IOException {
+ public SpatialWeight(IndexSearcher searcher) throws IOException {
this.searcher = searcher;
- this.latContext = latSource.newContext();
- this.lonContext = lonSource.newContext();
+ this.latContext = latSource.newContext(searcher);
+ this.lonContext = lonSource.newContext(searcher);
latSource.createWeight(latContext, searcher);
lonSource.createWeight(lonContext, searcher);
}
@@ -371,18 +370,13 @@ class SpatialDistanceQuery extends Query
}
@Override
- public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- return new SpatialScorer(getSimilarity(searcher), reader, this);
+ public Scorer scorer(AtomicReaderContext context, ScorerContext scorerContext) throws IOException {
+ return new SpatialScorer(getSimilarity(searcher), context, this);
}
@Override
- public Explanation explain(IndexReader reader, int doc) throws IOException {
- SolrIndexReader topReader = (SolrIndexReader)reader;
- SolrIndexReader[] subReaders = topReader.getLeafReaders();
- int[] offsets = topReader.getLeafOffsets();
- int readerPos = SolrIndexReader.readerIndex(doc, offsets);
- int readerBase = offsets[readerPos];
- return ((SpatialScorer)scorer(subReaders[readerPos], true, true)).explain(doc-readerBase);
+ public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
+ return ((SpatialScorer)scorer(context, ScorerContext.def().scoreDocsInOrder(true).topScorer(true))).explain(doc);
}
}
@@ -410,15 +404,15 @@ class SpatialDistanceQuery extends Query
int lastDistDoc;
double lastDist;
- public SpatialScorer(Similarity similarity, IndexReader reader, SpatialWeight w) throws IOException {
+ public SpatialScorer(Similarity similarity, AtomicReaderContext readerContext, SpatialWeight w) throws IOException {
super(similarity);
this.weight = w;
this.qWeight = w.getValue();
- this.reader = reader;
+ this.reader = readerContext.reader;
this.maxDoc = reader.maxDoc();
- this.delDocs = reader.hasDeletions() ? MultiFields.getDeletedDocs(reader) : null;
- latVals = latSource.getValues(weight.latContext, reader);
- lonVals = lonSource.getValues(weight.lonContext, reader);
+ this.delDocs = reader.getDeletedDocs();
+ latVals = latSource.getValues(weight.latContext, readerContext);
+ lonVals = lonSource.getValues(weight.lonContext, readerContext);
this.lonMin = SpatialDistanceQuery.this.lonMin;
this.lonMax = SpatialDistanceQuery.this.lonMax;
@@ -535,7 +529,7 @@ class SpatialDistanceQuery extends Query
@Override
- public Weight createWeight(Searcher searcher) throws IOException {
+ public Weight createWeight(IndexSearcher searcher) throws IOException {
return new SpatialWeight(searcher);
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/PointType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/PointType.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/PointType.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/PointType.java Thu Jan 13 19:53:21 2011
@@ -112,7 +112,7 @@ public class PointType extends Coordinat
*
*/
@Override
- public Field createField(SchemaField field, String externalVal, float boost) {
+ public Fieldable createField(SchemaField field, String externalVal, float boost) {
throw new UnsupportedOperationException("PointType uses multiple fields. field=" + field.getName());
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/RandomSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/RandomSortField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/RandomSortField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/RandomSortField.java Thu Jan 13 19:53:21 2011
@@ -22,12 +22,13 @@ import java.util.Map;
import org.apache.lucene.document.Fieldable;
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.
@@ -77,19 +78,13 @@ 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
public SortField getSortField(SchemaField field, boolean reverse) {
return new SortField(field.getName(), randomComparatorSource, reverse);
@@ -127,8 +122,8 @@ public class RandomSortField extends Fie
values[slot] = hash(doc+seed);
}
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- seed = getSeed(fieldname, reader);
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ seed = getSeed(fieldname, context);
return this;
}
@@ -154,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/realtime_search/solr/src/java/org/apache/solr/schema/SchemaField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SchemaField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SchemaField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SchemaField.java Thu Jan 13 19:53:21 2011
@@ -89,7 +89,7 @@ public final class SchemaField extends F
boolean isBinary() { return (properties & BINARY)!=0; }
- public Field createField(String val, float boost) {
+ public Fieldable createField(String val, float boost) {
return type.createField(this,val,boost);
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableDoubleField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableDoubleField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableDoubleField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableDoubleField.java Thu Jan 13 19:53:21 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/realtime_search/solr/src/java/org/apache/solr/schema/SortableFloatField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableFloatField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableFloatField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableFloatField.java Thu Jan 13 19:53:21 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/realtime_search/solr/src/java/org/apache/solr/schema/SortableIntField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableIntField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableIntField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableIntField.java Thu Jan 13 19:53:21 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/realtime_search/solr/src/java/org/apache/solr/schema/SortableLongField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableLongField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableLongField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/SortableLongField.java Thu Jan 13 19:53:21 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/realtime_search/solr/src/java/org/apache/solr/schema/StrFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/StrFieldSource.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/StrFieldSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/StrFieldSource.java Thu Jan 13 19:53:21 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/realtime_search/solr/src/java/org/apache/solr/schema/TrieDateField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieDateField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieDateField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieDateField.java Thu Jan 13 19:53:21 2011
@@ -160,7 +160,7 @@ public class TrieDateField extends DateF
}
@Override
- public Field createField(SchemaField field, String externalVal, float boost) {
+ public Fieldable createField(SchemaField field, String externalVal, float boost) {
boolean indexed = field.indexed();
boolean stored = field.stored();
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieField.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieField.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/schema/TrieField.java Thu Jan 13 19:53:21 2011
@@ -477,7 +477,7 @@ public class TrieField extends FieldType
}
@Override
- public Field createField(SchemaField field, String externalVal, float boost) {
+ public Fieldable createField(SchemaField field, String externalVal, float boost) {
boolean indexed = field.indexed();
boolean stored = field.stored();
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSet.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSet.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSet.java Thu Jan 13 19:53:21 2011
@@ -23,6 +23,7 @@ import org.apache.lucene.search.DocIdSet
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
@@ -246,17 +247,15 @@ abstract class DocSetBase implements Doc
return new Filter() {
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
- int offset = 0;
- SolrIndexReader r = (SolrIndexReader)reader;
- while (r.getParent() != null) {
- offset += r.getBase();
- r = r.getParent();
- }
+ public DocIdSet getDocIdSet(AtomicReaderContext ctx) throws IOException {
+ IndexReader.AtomicReaderContext context = (IndexReader.AtomicReaderContext)ctx; // TODO: remove after lucene migration
+ IndexReader reader = ctx.reader;
- if (r==reader) return bs;
+ if (context.isTopLevel) {
+ return bs;
+ }
- final int base = offset;
+ final int base = context.docBase;
final int maxDoc = reader.maxDoc();
final int max = base + maxDoc; // one past the max doc in this segment.
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSetHitCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSetHitCollector.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSetHitCollector.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/DocSetHitCollector.java Thu Jan 13 19:53:21 2011
@@ -20,7 +20,7 @@ package org.apache.solr.search;
import org.apache.lucene.search.Collector;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.util.OpenBitSet;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
@@ -80,8 +80,8 @@ class DocSetCollector extends Collector
public void setScorer(Scorer scorer) throws IOException {
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- this.base = docBase;
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ this.base = context.docBase;
}
public boolean acceptsDocsOutOfOrder() {
@@ -135,8 +135,8 @@ class DocSetDelegateCollector extends Do
collector.setScorer(scorer);
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- collector.setNextReader(reader, docBase);
- this.base = docBase;
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ collector.setNextReader(context);
+ this.base = context.docBase;
}
}
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/Grouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/Grouping.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/Grouping.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/Grouping.java Thu Jan 13 19:53:21 2011
@@ -17,7 +17,7 @@
package org.apache.solr.search;
-import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.*;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.util.NamedList;
@@ -151,7 +151,7 @@ public class Grouping {
@Override
void prepare() throws IOException {
- Map context = ValueSource.newContext();
+ Map context = ValueSource.newContext(searcher);
groupBy.createWeight(context, searcher);
}
@@ -457,14 +457,15 @@ class FilterCollector extends GroupColle
@Override
public void collect(int doc) throws IOException {
matches++;
- if (filter.exists(doc + docBase))
+ if (filter.exists(doc + docBase)) {
collector.collect(doc);
+ }
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- this.docBase = docBase;
- collector.setNextReader(reader, docBase);
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ docBase = context.docBase;
+ collector.setNextReader(context);
}
@Override
@@ -685,13 +686,13 @@ class TopGroupCollector extends GroupCol
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- this.docBase = docBase;
- docValues = vs.getValues(context, reader);
+ public void setNextReader(AtomicReaderContext readerContext) throws IOException {
+ this.docBase = readerContext.docBase;
+ docValues = vs.getValues(context, readerContext);
filler = docValues.getValueFiller();
mval = filler.getValue();
for (int i=0; i<comparators.length; i++)
- comparators[i] = comparators[i].setNextReader(reader, docBase);
+ comparators[i] = comparators[i].setNextReader(readerContext);
}
@Override
@@ -759,13 +760,13 @@ class Phase2GroupCollector extends Colle
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- this.docBase = docBase;
- docValues = vs.getValues(context, reader);
+ public void setNextReader(AtomicReaderContext readerContext) throws IOException {
+ this.docBase = readerContext.docBase;
+ docValues = vs.getValues(context, readerContext);
filler = docValues.getValueFiller();
mval = filler.getValue();
for (SearchGroupDocs group : groupMap.values())
- group.collector.setNextReader(reader, docBase);
+ group.collector.setNextReader(readerContext);
}
@Override
@@ -812,8 +813,8 @@ class Phase2StringGroupCollector extends
}
@Override
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- super.setNextReader(reader, docBase);
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ super.setNextReader(context);
index = ((StringIndexDocValues)docValues).getDocTermsIndex();
ordSet.clear();
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java Thu Jan 13 19:53:21 2011
@@ -54,7 +54,7 @@ class LuceneQueryOptimizer {
}
public TopDocs optimize(BooleanQuery original,
- Searcher searcher,
+ IndexSearcher searcher,
int numHits,
Query[] queryOut,
Filter[] filterOut
Modified: lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java?rev=1058718&r1=1058717&r2=1058718&view=diff
==============================================================================
--- lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java (original)
+++ lucene/dev/branches/realtime_search/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java Thu Jan 13 19:53:21 2011
@@ -19,6 +19,7 @@ package org.apache.solr.search;
import org.apache.lucene.search.*;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.packed.Direct16;
import org.apache.lucene.util.packed.Direct32;
@@ -101,8 +102,8 @@ class TermOrdValComparator_SML extends F
}
@Override
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- return TermOrdValComparator_SML.createComparator(reader, this);
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ return TermOrdValComparator_SML.createComparator(context.reader, this);
}
// Base class for specialized (per bit width of the
@@ -142,8 +143,8 @@ class TermOrdValComparator_SML extends F
}
@Override
- public FieldComparator setNextReader(IndexReader reader, int docBase) throws IOException {
- return TermOrdValComparator_SML.createComparator(reader, parent);
+ public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ return TermOrdValComparator_SML.createComparator(context.reader, parent);
}
@Override