You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by si...@apache.org on 2011/02/09 10:36:03 UTC
svn commit: r1068809 [29/36] - in /lucene/dev/branches/docvalues: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/.idea/copyright/
dev-tools/idea/lucene/ dev-tools/idea/lucene/contrib/ant/
dev-tools/idea/lucene/contrib/queryparser/ dev-tools...
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/DocSetHitCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/DocSetHitCollector.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/DocSetHitCollector.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/DocSetHitCollector.java Wed Feb 9 09:35:27 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;
@@ -45,6 +45,7 @@ class DocSetCollector extends Collector
this.maxDoc = maxDoc;
this.scratch = new int[smallSetSize];
}
+ @Override
public void collect(int doc) throws IOException {
doc += base;
// optimistically collect the first docs in an array
@@ -77,13 +78,16 @@ class DocSetCollector extends Collector
}
}
+ @Override
public void setScorer(Scorer scorer) throws IOException {
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- this.base = docBase;
+ @Override
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ this.base = context.docBase;
}
+ @Override
public boolean acceptsDocsOutOfOrder() {
return false;
}
@@ -97,6 +101,7 @@ class DocSetDelegateCollector extends Do
this.collector = collector;
}
+ @Override
public void collect(int doc) throws IOException {
collector.collect(doc);
@@ -120,6 +125,7 @@ class DocSetDelegateCollector extends Do
pos++;
}
+ @Override
public DocSet getDocSet() {
if (pos<=scratch.length) {
// assumes docs were collected in sorted order!
@@ -131,12 +137,14 @@ class DocSetDelegateCollector extends Do
}
}
+ @Override
public void setScorer(Scorer scorer) throws IOException {
collector.setScorer(scorer);
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
- collector.setNextReader(reader, docBase);
- this.base = docBase;
+ @Override
+ public void setNextReader(AtomicReaderContext context) throws IOException {
+ collector.setNextReader(context);
+ this.base = context.docBase;
}
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ExtendedDismaxQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -55,6 +55,7 @@ public class ExtendedDismaxQParserPlugin
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new ExtendedDismaxQParser(qstr, localParams, params, req);
}
@@ -96,6 +97,7 @@ class ExtendedDismaxQParser extends QPar
private QParser altQParser;
+ @Override
public Query parse() throws ParseException {
SolrParams localParams = getLocalParams();
SolrParams params = getParams();
@@ -483,6 +485,7 @@ class ExtendedDismaxQParser extends QPar
return parsedUserQuery == null ? altUserQuery : parsedUserQuery;
}
+ @Override
public void addDebugInfo(NamedList<Object> debugInfo) {
super.addDebugInfo(debugInfo);
debugInfo.add("altquerystring", altUserQuery);
@@ -820,6 +823,7 @@ class ExtendedDismaxQParser extends QPar
analyzer.removeStopFilter = remove;
}
+ @Override
protected Query getBooleanQuery(List clauses, boolean disableCoord) throws ParseException {
Query q = super.getBooleanQuery(clauses, disableCoord);
if (q != null) {
@@ -834,6 +838,7 @@ class ExtendedDismaxQParser extends QPar
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
+ @Override
protected void addClause(List clauses, int conj, int mods, Query q) {
//System.out.println("addClause:clauses="+clauses+" conj="+conj+" mods="+mods+" q="+q);
super.addClause(clauses, conj, mods, q);
@@ -1075,6 +1080,7 @@ final class ExtendedAnalyzer extends Ana
this.queryAnalyzer = parser.getReq().getSchema().getQueryAnalyzer();
}
+ @Override
public TokenStream tokenStream(String fieldName, Reader reader) {
if (!removeStopFilter) {
return queryAnalyzer.tokenStream(fieldName, reader);
@@ -1138,10 +1144,12 @@ final class ExtendedAnalyzer extends Ana
return newa.tokenStream(fieldName, reader);
}
+ @Override
public int getPositionIncrementGap(String fieldName) {
return queryAnalyzer.getPositionIncrementGap(fieldName);
}
+ @Override
public TokenStream reusableTokenStream(String fieldName, Reader reader) throws IOException {
if (!removeStopFilter) {
return queryAnalyzer.reusableTokenStream(fieldName, reader);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FastLRUCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FastLRUCache.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FastLRUCache.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FastLRUCache.java Wed Feb 9 09:35:27 2011
@@ -274,6 +274,7 @@ public class FastLRUCache<K,V> extends S
return lst;
}
+ @Override
public String toString() {
return name + getStatistics().toString();
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FieldQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FieldQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FieldQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FieldQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -38,8 +38,10 @@ public class FieldQParserPlugin extends
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
+ @Override
public Query parse() throws ParseException {
String field = localParams.get(QueryParsing.F);
String queryText = localParams.get(QueryParsing.V);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParser.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParser.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParser.java Wed Feb 9 09:35:27 2011
@@ -56,6 +56,7 @@ public class FunctionQParser extends QPa
return parseMultipleSources;
}
+ @Override
public Query parse() throws ParseException {
sp = new QueryParsing.StrParser(getString());
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -31,6 +31,7 @@ public class FunctionQParserPlugin exten
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new FunctionQParser(qstr, localParams, params, req);
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/FunctionRangeQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -39,11 +39,13 @@ public class FunctionRangeQParserPlugin
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
ValueSource vs;
String funcStr;
+ @Override
public Query parse() throws ParseException {
funcStr = localParams.get(QueryParsing.V, null);
Query funcQ = subQuery(funcStr, FunctionQParserPlugin.NAME).parse();
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/Grouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/Grouping.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/Grouping.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/Grouping.java Wed Feb 9 09:35:27 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;
@@ -77,10 +77,11 @@ public class Grouping {
int docsToCollect = getMax(off, len, max);
// TODO: implement a DocList impl that doesn't need to start at offset=0
- TopDocs topDocs = collector.topDocs(0, docsToCollect);
+ TopDocs topDocs = collector.topDocs(0, Math.max(docsToCollect,1)); // 0 isn't supported as a valid value
+ int docsCollected = Math.min(docsToCollect, topDocs.scoreDocs.length);
- int ids[] = new int[topDocs.scoreDocs.length];
- float[] scores = needScores ? new float[topDocs.scoreDocs.length] : null;
+ int ids[] = new int[docsCollected];
+ float[] scores = needScores ? new float[docsCollected] : null;
for (int i=0; i<ids.length; i++) {
ids[i] = topDocs.scoreDocs[i].doc;
if (scores != null)
@@ -151,7 +152,7 @@ public class Grouping {
@Override
void prepare() throws IOException {
- Map context = ValueSource.newContext();
+ Map context = ValueSource.newContext(searcher);
groupBy.createWeight(context, searcher);
}
@@ -162,7 +163,7 @@ public class Grouping {
// if we aren't going to return any groups, disregard the offset
if (numGroups == 0) maxGroupToFind = 0;
- collector = new TopGroupCollector(groupBy, context, normalizeSort(sort), maxGroupToFind);
+ collector = new TopGroupCollector(groupBy, context, searcher.weightSort(normalizeSort(sort)), maxGroupToFind);
/*** if we need a different algorithm when sort != group.sort
if (compareSorts(sort, groupSort)) {
@@ -185,9 +186,9 @@ public class Grouping {
int collectorOffset = format==Format.Simple ? 0 : offset;
if (groupBy instanceof StrFieldSource) {
- collector2 = new Phase2StringGroupCollector(collector, groupBy, context, groupSort, docsToCollect, needScores, collectorOffset);
+ collector2 = new Phase2StringGroupCollector(collector, groupBy, context, searcher.weightSort(groupSort), docsToCollect, needScores, collectorOffset);
} else {
- collector2 = new Phase2GroupCollector(collector, groupBy, context, groupSort, docsToCollect, needScores, collectorOffset);
+ collector2 = new Phase2GroupCollector(collector, groupBy, context, searcher.weightSort(groupSort), docsToCollect, needScores, collectorOffset);
}
return collector2;
}
@@ -306,11 +307,11 @@ public class Grouping {
return v;
}
- static TopDocsCollector newCollector(Sort sort, int numHits, boolean fillFields, boolean needScores) throws IOException {
+ TopDocsCollector newCollector(Sort sort, int numHits, boolean fillFields, boolean needScores) throws IOException {
if (sort==null || sort==byScoreDesc) {
return TopScoreDocCollector.create(numHits, true);
} else {
- return TopFieldCollector.create(sort, numHits, false, needScores, needScores, true);
+ return TopFieldCollector.create(searcher.weightSort(sort), numHits, false, needScores, needScores, true);
}
}
@@ -457,14 +458,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
@@ -504,12 +506,12 @@ class TopGroupCollector extends GroupCol
int matches;
- public TopGroupCollector(ValueSource groupByVS, Map vsContext, Sort sort, int nGroups) throws IOException {
+ public TopGroupCollector(ValueSource groupByVS, Map vsContext, Sort weightedSort, int nGroups) throws IOException {
this.vs = groupByVS;
this.context = vsContext;
this.nGroups = nGroups = Math.max(1,nGroups); // we need a minimum of 1 for this collector
- SortField[] sortFields = sort.getSort();
+ SortField[] sortFields = weightedSort.getSort();
this.comparators = new FieldComparator[sortFields.length];
this.reversed = new int[sortFields.length];
for (int i = 0; i < sortFields.length; i++) {
@@ -685,13 +687,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
@@ -718,7 +720,7 @@ class Phase2GroupCollector extends Colle
int docBase;
// TODO: may want to decouple from the phase1 collector
- public Phase2GroupCollector(TopGroupCollector topGroups, ValueSource groupByVS, Map vsContext, Sort sort, int docsPerGroup, boolean getScores, int offset) throws IOException {
+ public Phase2GroupCollector(TopGroupCollector topGroups, ValueSource groupByVS, Map vsContext, Sort weightedSort, int docsPerGroup, boolean getScores, int offset) throws IOException {
boolean getSortFields = false;
if (topGroups.orderedGroups == null)
@@ -732,10 +734,10 @@ class Phase2GroupCollector extends Colle
}
SearchGroupDocs groupDocs = new SearchGroupDocs();
groupDocs.groupValue = group.groupValue;
- if (sort==null)
+ if (weightedSort==null)
groupDocs.collector = TopScoreDocCollector.create(docsPerGroup, true);
else
- groupDocs.collector = TopFieldCollector.create(sort, docsPerGroup, getSortFields, getScores, getScores, true);
+ groupDocs.collector = TopFieldCollector.create(weightedSort, docsPerGroup, getSortFields, getScores, getScores, true);
groupMap.put(groupDocs.groupValue, groupDocs);
}
@@ -759,13 +761,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
@@ -790,8 +792,8 @@ class Phase2StringGroupCollector extends
final SearchGroupDocs[] groups;
final BytesRef spare = new BytesRef();
- public Phase2StringGroupCollector(TopGroupCollector topGroups, ValueSource groupByVS, Map vsContext, Sort sort, int docsPerGroup, boolean getScores, int offset) throws IOException {
- super(topGroups, groupByVS, vsContext,sort,docsPerGroup,getScores,offset);
+ public Phase2StringGroupCollector(TopGroupCollector topGroups, ValueSource groupByVS, Map vsContext, Sort weightedSort, int docsPerGroup, boolean getScores, int offset) throws IOException {
+ super(topGroups, groupByVS, vsContext,weightedSort,docsPerGroup,getScores,offset);
ordSet = new SentinelIntSet(groupMap.size(), -1);
groups = new SearchGroupDocs[ordSet.keys.length];
}
@@ -812,8 +814,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/docvalues/solr/src/java/org/apache/solr/search/LRUCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LRUCache.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LRUCache.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LRUCache.java Wed Feb 9 09:35:27 2011
@@ -77,6 +77,7 @@ public class LRUCache<K,V> extends SolrC
description += ')';
map = new LinkedHashMap<K,V>(initialSize, 0.75f, true) {
+ @Override
protected boolean removeEldestEntry(Map.Entry eldest) {
if (size() > limit) {
// increment evictions regardless of state.
@@ -277,6 +278,7 @@ public class LRUCache<K,V> extends SolrC
return lst;
}
+ @Override
public String toString() {
return name + getStatistics().toString();
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -41,6 +41,7 @@ public class LuceneQParserPlugin extends
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new LuceneQParser(qstr, localParams, params, req);
}
@@ -55,6 +56,7 @@ class LuceneQParser extends QParser {
}
+ @Override
public Query parse() throws ParseException {
String qstr = getString();
if (qstr == null) return null;
@@ -73,6 +75,7 @@ class LuceneQParser extends QParser {
}
+ @Override
public String[] getDefaultHighlightFields() {
return lparser == null ? new String[]{} : new String[]{lparser.getField()};
}
@@ -87,6 +90,7 @@ class OldLuceneQParser extends LuceneQPa
super(qstr, localParams, params, req);
}
+ @Override
public Query parse() throws ParseException {
// handle legacy "query;sort" syntax
if (getLocalParams() == null) {
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/LuceneQueryOptimizer.java Wed Feb 9 09:35:27 2011
@@ -46,6 +46,7 @@ class LuceneQueryOptimizer {
*/
public LuceneQueryOptimizer(final int cacheSize, float threshold) {
this.cache = new LinkedHashMap(cacheSize, 0.75f, true) {
+ @Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > cacheSize; // limit size of cache
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MissingStringLastComparatorSource.java Wed Feb 9 09:35:27 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;
@@ -46,6 +47,7 @@ public class MissingStringLastComparator
this.missingValueProxy=missingValueProxy;
}
+ @Override
public FieldComparator newComparator(String fieldname, int numHits, int sortPos, boolean reversed) throws IOException {
return new TermOrdValComparator_SML(numHits, fieldname, sortPos, reversed, missingValueProxy);
}
@@ -101,8 +103,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 +144,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
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MutableValue.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MutableValue.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MutableValue.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/MutableValue.java Wed Feb 9 09:35:27 2011
@@ -50,6 +50,7 @@ public abstract class MutableValue imple
return (c1 == c2) && this.equalsSameType(other);
}
+ @Override
public abstract int hashCode();
@Override
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/NestedQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/NestedQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/NestedQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/NestedQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -38,25 +38,30 @@ public class NestedQParserPlugin extends
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
QParser baseParser;
ValueSource vs;
String b;
+ @Override
public Query parse() throws ParseException {
baseParser = subQuery(localParams.get(QueryParsing.V), null);
return baseParser.getQuery();
}
+ @Override
public String[] getDefaultHighlightFields() {
return baseParser.getDefaultHighlightFields();
}
+ @Override
public Query getHighlightQuery() throws ParseException {
return baseParser.getHighlightQuery();
}
+ @Override
public void addDebugInfo(NamedList<Object> debugInfo) {
// encapsulate base debug info in a sub-list?
baseParser.addDebugInfo(debugInfo);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/OldLuceneQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -31,6 +31,7 @@ public class OldLuceneQParserPlugin exte
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new OldLuceneQParser(qstr, localParams, params, req);
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/PrefixQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/PrefixQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/PrefixQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/PrefixQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -36,8 +36,10 @@ public class PrefixQParserPlugin extends
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
+ @Override
public Query parse() throws ParseException {
return new PrefixQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QParser.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QParser.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QParser.java Wed Feb 9 09:35:27 2011
@@ -63,10 +63,11 @@ public abstract class QParser {
if (localParams != null) {
String tagStr = localParams.get(CommonParams.TAG);
if (tagStr != null) {
- Map context = req.getContext();
- Map<String,Collection<Object>> tagMap = (Map<String, Collection<Object>>)req.getContext().get("tags");
+ Map<Object,Object> context = req.getContext();
+ @SuppressWarnings("unchecked")
+ Map<Object,Collection<Object>> tagMap = (Map<Object, Collection<Object>>)req.getContext().get("tags");
if (tagMap == null) {
- tagMap = new HashMap<String,Collection<Object>>();
+ tagMap = new HashMap<Object,Collection<Object>>();
context.put("tags", tagMap);
}
if (tagStr.indexOf(',') >= 0) {
@@ -85,10 +86,10 @@ public abstract class QParser {
}
- private static void addTag(Map tagMap, Object key, Object val) {
- Collection lst = (Collection)tagMap.get(key);
+ private static void addTag(Map<Object,Collection<Object>> tagMap, Object key, Object val) {
+ Collection<Object> lst = tagMap.get(key);
if (lst == null) {
- lst = new ArrayList(2);
+ lst = new ArrayList<Object>(2);
tagMap.put(key, lst);
}
lst.add(val);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryParsing.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryParsing.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryParsing.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryParsing.java Wed Feb 9 09:35:27 2011
@@ -330,16 +330,9 @@ public class QueryParsing {
}
throw new SolrException
(SolrException.ErrorCode.BAD_REQUEST,
- "sort param fiedl can't be found: " + field);
+ "sort param field can't be found: " + field);
}
-
- // TODO: remove this - it should be up to the FieldType
- if (!sf.indexed()) {
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "can not sort on unindexed field: "
- + field);
- }
- lst.add(sf.getType().getSortField(sf, top));
+ lst.add(sf.getSortField(top));
}
}
@@ -828,6 +821,7 @@ public class QueryParsing {
return pos < end ? val.charAt(pos) : 0;
}
+ @Override
public String toString() {
return "'" + val + "'" + ", pos=" + pos;
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryResultKey.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryResultKey.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryResultKey.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/QueryResultKey.java Wed Feb 9 09:35:27 2011
@@ -56,10 +56,12 @@ public final class QueryResultKey {
hc = h;
}
+ @Override
public int hashCode() {
return hc;
}
+ @Override
public boolean equals(Object o) {
if (o==this) return true;
if (!(o instanceof QueryResultKey)) return false;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/RawQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/RawQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/RawQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/RawQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -40,8 +40,10 @@ public class RawQParserPlugin extends QP
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
+ @Override
public Query parse() throws ParseException {
return new TermQuery(new Term(localParams.get(QueryParsing.F), localParams.get(QueryParsing.V)));
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrCacheBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrCacheBase.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrCacheBase.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrCacheBase.java Wed Feb 9 09:35:27 2011
@@ -55,6 +55,7 @@ public abstract class SolrCacheBase {
throw new RuntimeException("Can't parse autoWarm value: " + configValue, e);
}
}
+ @Override
public String toString() {
return strVal;
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrConstantScoreQuery.java Wed Feb 9 09:35:27 2011
@@ -2,6 +2,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.solr.search.function.ValueSource;
import org.apache.solr.common.SolrException;
@@ -40,28 +41,29 @@ public class SolrConstantScoreQuery exte
}
/** Returns the encapsulated filter */
+ @Override
public Filter getFilter() {
return filter;
}
+ @Override
public Query rewrite(IndexReader reader) throws IOException {
return this;
}
+ @Override
public void extractTerms(Set terms) {
// OK to not add any terms when used for MultiSearcher,
// but may not be OK for highlighting
}
protected class ConstantWeight extends Weight {
- private Similarity similarity;
private float queryNorm;
private float queryWeight;
private Map context;
public ConstantWeight(IndexSearcher searcher) throws IOException {
- this.similarity = getSimilarity(searcher);
- this.context = ValueSource.newContext();
+ this.context = ValueSource.newContext(searcher);
if (filter instanceof SolrFilter)
((SolrFilter)filter).createWeight(context, searcher);
}
@@ -89,14 +91,14 @@ public class SolrConstantScoreQuery exte
}
@Override
- public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- return new ConstantScorer(similarity, reader, this);
+ public Scorer scorer(AtomicReaderContext context, ScorerContext scorerContext) throws IOException {
+ return new ConstantScorer(context, this);
}
@Override
- public Explanation explain(IndexReader reader, int doc) throws IOException {
+ public Explanation explain(AtomicReaderContext context, int doc) throws IOException {
- ConstantScorer cs = new ConstantScorer(similarity, reader, this);
+ ConstantScorer cs = new ConstantScorer(context, this);
boolean exists = cs.docIdSetIterator.advance(doc) == doc;
ComplexExplanation result = new ComplexExplanation();
@@ -123,10 +125,10 @@ public class SolrConstantScoreQuery exte
final float theScore;
int doc = -1;
- public ConstantScorer(Similarity similarity, IndexReader reader, ConstantWeight w) throws IOException {
- super(similarity);
+ public ConstantScorer(AtomicReaderContext context, ConstantWeight w) throws IOException {
+ super(w);
theScore = w.getValue();
- DocIdSet docIdSet = filter instanceof SolrFilter ? ((SolrFilter)filter).getDocIdSet(w.context, reader) : filter.getDocIdSet(reader);
+ DocIdSet docIdSet = filter instanceof SolrFilter ? ((SolrFilter)filter).getDocIdSet(w.context, context) : filter.getDocIdSet(context);
if (docIdSet == null) {
docIdSetIterator = DocIdSet.EMPTY_DOCIDSET.iterator();
} else {
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrFilter.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrFilter.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrFilter.java Wed Feb 9 09:35:27 2011
@@ -21,6 +21,8 @@ import org.apache.lucene.search.Filter;
import org.apache.lucene.search.IndexSearcher;
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.AtomicReaderContext;
import java.util.Map;
import java.io.IOException;
@@ -37,10 +39,10 @@ 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, IndexReader reader) throws IOException;
+ public abstract DocIdSet getDocIdSet(Map context, AtomicReaderContext readerContext) throws IOException;
@Override
- public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
- return getDocIdSet(null, reader);
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+ return getDocIdSet(null, context);
}
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SolrIndexSearcher.java Wed Feb 9 09:35:27 2011
@@ -21,6 +21,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.FieldSelector;
import org.apache.lucene.document.FieldSelectorResult;
import org.apache.lucene.index.*;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
@@ -67,7 +68,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;
private final int queryResultWindowSize;
@@ -79,7 +80,7 @@ public class SolrIndexSearcher extends I
private final SolrCache<Query,DocSet> filterCache;
private final SolrCache<QueryResultKey,DocList> queryResultCache;
private final SolrCache<Integer,Document> documentCache;
- private final SolrCache<String,Object> fieldValueCache;
+ private final SolrCache<String,UnInvertedField> fieldValueCache;
private final LuceneQueryOptimizer optimizer;
@@ -116,35 +117,22 @@ 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) {
- 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);
-
if (r.directory() instanceof FSDirectory) {
FSDirectory fsDirectory = (FSDirectory) r.directory();
indexDir = fsDirectory.getDirectory().getAbsolutePath();
}
this.closeReader = closeReader;
- setSimilarity(schema.getSimilarity());
+ setSimilarityProvider(schema.getSimilarityProvider());
SolrConfig solrConfig = core.getSolrConfig();
queryResultWindowSize = solrConfig.queryResultWindowSize;
@@ -196,6 +184,7 @@ public class SolrIndexSearcher extends I
}
+ @Override
public String toString() {
return name;
}
@@ -219,6 +208,7 @@ public class SolrIndexSearcher extends I
*
* In particular, the underlying reader and any cache's in use are closed.
*/
+ @Override
public void close() throws IOException {
if (cachingEnabled) {
StringBuilder sb = new StringBuilder();
@@ -246,8 +236,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; }
@@ -369,7 +357,7 @@ public class SolrIndexSearcher extends I
/**
* @return the indexDir on which this searcher is opened
- * @see org.apache.solr.search.SolrIndexSearcher#SolrIndexSearcher(org.apache.solr.core.SolrCore, org.apache.solr.schema.IndexSchema, String, String, boolean)
+ * @see #SolrIndexSearcher(SolrCore, IndexSchema, String, Directory, boolean)
*/
public String getIndexDir() {
return indexDir;
@@ -404,6 +392,7 @@ public class SolrIndexSearcher extends I
/**
* Retrieve the {@link Document} instance corresponding to the document id.
*/
+ @Override
public Document doc(int i) throws IOException {
return doc(i, (Set<String>)null);
}
@@ -412,6 +401,7 @@ public class SolrIndexSearcher extends I
* This method does not currently use the Solr document cache.
*
* @see IndexReader#document(int, FieldSelector) */
+ @Override
public Document doc(int n, FieldSelector fieldSelector) throws IOException {
return getIndexReader().document(n, fieldSelector);
}
@@ -470,10 +460,34 @@ public class SolrIndexSearcher extends I
////////////////////////////////////////////////////////////////////////////////
/** expert: internal API, subject to change */
- public SolrCache getFieldValueCache() {
+ public SolrCache<String,UnInvertedField> getFieldValueCache() {
return fieldValueCache;
}
+ /** Returns a weighted sort according to this searcher */
+ public Sort weightSort(Sort sort) throws IOException {
+ if (sort == null) return null;
+ SortField[] sorts = sort.getSort();
+
+ boolean needsWeighting = false;
+ for (SortField sf : sorts) {
+ if (sf instanceof SolrSortField) {
+ needsWeighting = true;
+ break;
+ }
+ }
+ if (!needsWeighting) return sort;
+
+ SortField[] newSorts = Arrays.copyOf(sorts, sorts.length);
+ for (int i=0; i<newSorts.length; i++) {
+ if (newSorts[i] instanceof SolrSortField) {
+ newSorts[i] = ((SolrSortField)newSorts[i]).weight(this);
+ }
+ }
+
+ return new Sort(newSorts);
+ }
+
/**
* Returns the first document number containing the term <code>t</code>
@@ -826,19 +840,17 @@ public class SolrIndexSearcher extends I
if (filter==null) {
if (query instanceof TermQuery) {
Term t = ((TermQuery)query).getTerm();
- SolrIndexReader[] readers = reader.getLeafReaders();
- int[] offsets = reader.getLeafOffsets();
+ final AtomicReaderContext[] leaves = leafContexts;
- for (int i=0; i<readers.length; i++) {
- SolrIndexReader sir = readers[i];
- int offset = offsets[i];
- collector.setNextReader(sir, offset);
-
- Fields fields = sir.fields();
+ for (int i=0; i<leaves.length; i++) {
+ final AtomicReaderContext leaf = leaves[i];
+ final IndexReader reader = leaf.reader;
+ collector.setNextReader(leaf);
+ Fields fields = reader.fields();
Terms terms = fields.terms(t.field());
BytesRef termBytes = t.bytes();
- Bits skipDocs = sir.getDeletedDocs();
+ Bits skipDocs = reader.getDeletedDocs();
DocsEnum docsEnum = terms==null ? null : terms.docs(skipDocs, termBytes, null);
if (docsEnum != null) {
@@ -898,22 +910,6 @@ public class SolrIndexSearcher extends I
return positive ? getDocSetNC(absQ,filter) : filter.andNot(getPositiveDocSet(absQ));
}
-
- /**
- * Converts a filter into a DocSet.
- * This method is not cache-aware and no caches are checked.
- */
- public DocSet convertFilter(Filter lfilter) throws IOException {
- DocIdSet docSet = lfilter.getDocIdSet(this.reader);
- OpenBitSet obs = new OpenBitSet();
- DocIdSetIterator it = docSet.iterator();
- int doc;
- while((doc = it.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
- obs.fastSet(doc);
- }
- return new BitDocSet(obs);
- }
-
/**
* Returns documents matching both <code>query</code> and <code>filter</code>
* and sorted by <code>sort</code>.
@@ -1137,13 +1133,17 @@ public class SolrIndexSearcher extends I
if (!needScores) {
collector = new Collector () {
+ @Override
public void setScorer(Scorer scorer) throws IOException {
}
+ @Override
public void collect(int doc) throws IOException {
numHits[0]++;
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ @Override
+ public void setNextReader(AtomicReaderContext context) throws IOException {
}
+ @Override
public boolean acceptsDocsOutOfOrder() {
return true;
}
@@ -1151,16 +1151,20 @@ public class SolrIndexSearcher extends I
} else {
collector = new Collector() {
Scorer scorer;
+ @Override
public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
}
+ @Override
public void collect(int doc) throws IOException {
numHits[0]++;
float score = scorer.score();
if (score > topscore[0]) topscore[0]=score;
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ @Override
+ public void setNextReader(AtomicReaderContext context) throws IOException {
}
+ @Override
public boolean acceptsDocsOutOfOrder() {
return true;
}
@@ -1188,7 +1192,7 @@ public class SolrIndexSearcher extends I
if (cmd.getSort() == null) {
topCollector = TopScoreDocCollector.create(len, true);
} else {
- topCollector = TopFieldCollector.create(cmd.getSort(), len, false, needScores, needScores, true);
+ topCollector = TopFieldCollector.create(weightSort(cmd.getSort()), len, false, needScores, needScores, true);
}
Collector collector = topCollector;
if( timeAllowed > 0 ) {
@@ -1258,16 +1262,20 @@ public class SolrIndexSearcher extends I
} else {
collector = setCollector = new DocSetDelegateCollector(smallSetSize, maxDoc, new Collector() {
Scorer scorer;
- public void setScorer(Scorer scorer) throws IOException {
+ @Override
+ public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
}
- public void collect(int doc) throws IOException {
+ @Override
+ public void collect(int doc) throws IOException {
float score = scorer.score();
if (score > topscore[0]) topscore[0]=score;
}
- public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ @Override
+ public void setNextReader(AtomicReaderContext context) throws IOException {
}
- public boolean acceptsDocsOutOfOrder() {
+ @Override
+ public boolean acceptsDocsOutOfOrder() {
return false;
}
});
@@ -1298,7 +1306,7 @@ public class SolrIndexSearcher extends I
if (cmd.getSort() == null) {
topCollector = TopScoreDocCollector.create(len, true);
} else {
- topCollector = TopFieldCollector.create(cmd.getSort(), len, false, needScores, needScores, true);
+ topCollector = TopFieldCollector.create(weightSort(cmd.getSort()), len, false, needScores, needScores, true);
}
DocSetCollector setCollector = new DocSetDelegateCollector(maxDoc>>6, maxDoc, topCollector);
@@ -1580,27 +1588,27 @@ public class SolrIndexSearcher extends I
// bit of a hack to tell if a set is sorted - do it better in the futute.
boolean inOrder = set instanceof BitDocSet || set instanceof SortedIntDocSet;
- TopDocsCollector topCollector = TopFieldCollector.create(sort, nDocs, false, false, false, inOrder);
+ TopDocsCollector topCollector = TopFieldCollector.create(weightSort(sort), nDocs, false, false, false, inOrder);
DocIterator iter = set.iterator();
int base=0;
int end=0;
int readerIndex = -1;
- SolrIndexReader r=null;
-
+
+ AtomicReaderContext leaf = null;
- while(iter.hasNext()) {
+ for (int i = 0; i < leafContexts.length; i++) {
int doc = iter.nextDoc();
while (doc>=end) {
- r = reader.getLeafReaders()[++readerIndex];
- base = reader.getLeafOffsets()[readerIndex];
- end = base + r.maxDoc();
- topCollector.setNextReader(r, base);
+ leaf = leafContexts[i++];
+ base = leaf.docBase;
+ end = base + leaf.reader.maxDoc();
+ topCollector.setNextReader(leaf);
// we should never need to set the scorer given the settings for the collector
}
topCollector.collect(doc-base);
}
-
+
TopDocs topDocs = topCollector.topDocs(0, nDocs);
int nDocsReturned = topDocs.scoreDocs.length;
@@ -1767,8 +1775,8 @@ public class SolrIndexSearcher extends I
return null;
}
- public NamedList getStatistics() {
- NamedList lst = new SimpleOrderedMap();
+ public NamedList<Object> getStatistics() {
+ NamedList<Object> lst = new SimpleOrderedMap<Object>();
lst.add("searcherName", name);
lst.add("caching", cachingEnabled);
lst.add("numDocs", reader.numDocs());
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SortedIntDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SortedIntDocSet.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SortedIntDocSet.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SortedIntDocSet.java Wed Feb 9 09:35:27 2011
@@ -22,6 +22,7 @@ import org.apache.lucene.search.DocIdSet
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.search.Filter;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import java.io.IOException;
@@ -551,14 +552,10 @@ public class SortedIntDocSet extends Doc
int lastEndIdx = 0;
@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();
- }
- final int base = offset;
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+ IndexReader reader = context.reader;
+
+ final int base = context.docBase;
final int maxDoc = reader.maxDoc();
final int max = base + maxDoc; // one past the max doc in this segment.
int sidx = Math.max(0,lastEndIdx);
@@ -589,6 +586,7 @@ public class SortedIntDocSet extends Doc
return new DocIdSet() {
+ @Override
public DocIdSetIterator iterator() throws IOException {
return new DocIdSetIterator() {
int idx = startIdx;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/SpatialBoxQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -31,6 +31,7 @@ public class SpatialBoxQParserPlugin ext
return new SpatialFilterQParser(qstr, localParams, params, req, true);
}
+ @Override
public void init(NamedList args) {
}
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/TermQParserPlugin.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/TermQParserPlugin.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/TermQParserPlugin.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/TermQParserPlugin.java Wed Feb 9 09:35:27 2011
@@ -47,8 +47,10 @@ public class TermQParserPlugin extends Q
public void init(NamedList args) {
}
+ @Override
public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
return new QParser(qstr, localParams, params, req) {
+ @Override
public Query parse() throws ParseException {
String fname = localParams.get(QueryParsing.F);
FieldType ft = req.getSchema().getFieldTypeNoEx(fname);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ValueSourceParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ValueSourceParser.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ValueSourceParser.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/ValueSourceParser.java Wed Feb 9 09:35:27 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;
@@ -81,31 +81,35 @@ public abstract class ValueSourceParser
static {
addParser("ord", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
String field = fp.parseId();
- return new TopValueSource(new OrdFieldSource(field));
+ return new OrdFieldSource(field);
}
});
addParser("literal", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new LiteralValueSource(fp.getString());
}
});
addParser("rord", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
String field = fp.parseId();
- return new TopValueSource(new ReverseOrdFieldSource(field));
+ return new ReverseOrdFieldSource(field);
}
});
addParser("top", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
+ // top(vs) is now a no-op
ValueSource source = fp.parseValueSource();
- // nested top is redundant, and ord and rord get automatically wrapped
- if (source instanceof TopValueSource) return source;
- return new TopValueSource(source);
+ return source;
}
});
addParser("linear", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
float slope = fp.parseFloat();
@@ -114,6 +118,7 @@ public abstract class ValueSourceParser
}
});
addParser("max", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
float val = fp.parseFloat();
@@ -121,6 +126,7 @@ public abstract class ValueSourceParser
}
});
addParser("recip", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
float m = fp.parseFloat();
@@ -130,14 +136,16 @@ public abstract class ValueSourceParser
}
});
addParser("scale", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
float min = fp.parseFloat();
float max = fp.parseFloat();
- return new TopValueSource(new ScaleFloatFunction(source, min, max));
+ return new ScaleFloatFunction(source, min, max);
}
});
addParser("div", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
@@ -145,6 +153,7 @@ public abstract class ValueSourceParser
}
});
addParser("map", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
float min = fp.parseFloat();
@@ -156,13 +165,16 @@ public abstract class ValueSourceParser
});
addParser("abs", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource source = fp.parseValueSource();
return new SimpleFloatFunction(source) {
+ @Override
protected String name() {
return "abs";
}
+ @Override
protected float func(int doc, DocValues vals) {
return Math.abs(vals.floatVal(doc));
}
@@ -170,6 +182,7 @@ public abstract class ValueSourceParser
}
});
addParser("sum", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
List<ValueSource> sources = fp.parseValueSourceList();
return new SumFloatFunction(sources.toArray(new ValueSource[sources.size()]));
@@ -178,6 +191,7 @@ public abstract class ValueSourceParser
alias("sum","add");
addParser("product", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
List<ValueSource> sources = fp.parseValueSourceList();
return new ProductFloatFunction(sources.toArray(new ValueSource[sources.size()]));
@@ -186,14 +200,17 @@ public abstract class ValueSourceParser
alias("product","mul");
addParser("sub", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
return new DualFloatFunction(a, b) {
+ @Override
protected String name() {
return "sub";
}
+ @Override
protected float func(int doc, DocValues aVals, DocValues bVals) {
return aVals.floatVal(doc) - bVals.floatVal(doc);
}
@@ -201,12 +218,14 @@ public abstract class ValueSourceParser
}
});
addParser("vector", new ValueSourceParser(){
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException{
return new VectorValueSource(fp.parseValueSourceList());
}
});
addParser("query", new ValueSourceParser() {
// boost(query($q),rating)
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
Query q = fp.parseNestedQuery();
float defVal = 0.0f;
@@ -217,6 +236,7 @@ public abstract class ValueSourceParser
}
});
addParser("boost", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
Query q = fp.parseNestedQuery();
ValueSource vs = fp.parseValueSource();
@@ -225,6 +245,7 @@ public abstract class ValueSourceParser
}
});
addParser("joindf", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
String f0 = fp.parseArg();
String qf = fp.parseArg();
@@ -235,6 +256,7 @@ public abstract class ValueSourceParser
addParser("geodist", HaversineConstFunction.parser);
addParser("hsin", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
double radius = fp.parseDouble();
@@ -275,6 +297,7 @@ public abstract class ValueSourceParser
});
addParser("ghhsin", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
double radius = fp.parseDouble();
@@ -286,6 +309,7 @@ public abstract class ValueSourceParser
});
addParser("geohash", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource lat = fp.parseValueSource();
@@ -295,6 +319,7 @@ public abstract class ValueSourceParser
}
});
addParser("strdist", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource str1 = fp.parseValueSource();
@@ -320,117 +345,140 @@ public abstract class ValueSourceParser
});
addParser(new DoubleParser("rad") {
+ @Override
public double func(int doc, DocValues vals) {
return vals.doubleVal(doc) * DistanceUtils.DEGREES_TO_RADIANS;
}
});
addParser(new DoubleParser("deg") {
+ @Override
public double func(int doc, DocValues vals) {
return vals.doubleVal(doc) * DistanceUtils.RADIANS_TO_DEGREES;
}
});
addParser(new DoubleParser("sqrt") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.sqrt(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("cbrt") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.cbrt(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("log") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.log10(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("ln") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.log(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("exp") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.exp(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("sin") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.sin(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("cos") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.cos(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("tan") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.tan(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("asin") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.asin(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("acos") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.acos(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("atan") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.atan(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("sinh") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.sinh(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("cosh") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.cosh(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("tanh") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.tanh(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("ceil") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.ceil(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("floor") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.floor(vals.doubleVal(doc));
}
});
addParser(new DoubleParser("rint") {
+ @Override
public double func(int doc, DocValues vals) {
return Math.rint(vals.doubleVal(doc));
}
});
addParser(new Double2Parser("pow") {
+ @Override
public double func(int doc, DocValues a, DocValues b) {
return Math.pow(a.doubleVal(doc), b.doubleVal(doc));
}
});
addParser(new Double2Parser("hypot") {
+ @Override
public double func(int doc, DocValues a, DocValues b) {
return Math.hypot(a.doubleVal(doc), b.doubleVal(doc));
}
});
addParser(new Double2Parser("atan2") {
+ @Override
public double func(int doc, DocValues a, DocValues b) {
return Math.atan2(a.doubleVal(doc), b.doubleVal(doc));
}
});
addParser("sqedist", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
List<ValueSource> sources = fp.parseValueSourceList();
MVResult mvr = getMultiValueSources(sources);
@@ -440,6 +488,7 @@ public abstract class ValueSourceParser
});
addParser("dist", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
float power = fp.parseFloat();
List<ValueSource> sources = fp.parseValueSourceList();
@@ -451,11 +500,13 @@ public abstract class ValueSourceParser
addParser("pi", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new DoubleConstValueSource(Math.PI);
}
});
addParser("e", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new DoubleConstValueSource(Math.E);
}
@@ -463,6 +514,7 @@ public abstract class ValueSourceParser
addParser("docfreq", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
TInfo tinfo = parseTerm(fp);
return new DocFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
@@ -470,6 +522,7 @@ public abstract class ValueSourceParser
});
addParser("idf", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
TInfo tinfo = parseTerm(fp);
return new IDFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
@@ -477,6 +530,7 @@ public abstract class ValueSourceParser
});
addParser("termfreq", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
TInfo tinfo = parseTerm(fp);
return new TermFreqValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
@@ -484,6 +538,7 @@ public abstract class ValueSourceParser
});
addParser("tf", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
TInfo tinfo = parseTerm(fp);
return new TFValueSource(tinfo.field, tinfo.val, tinfo.indexedField, tinfo.indexedBytes);
@@ -491,6 +546,7 @@ public abstract class ValueSourceParser
});
addParser("norm", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
String field = fp.parseArg();
return new NormValueSource(field);
@@ -498,12 +554,14 @@ public abstract class ValueSourceParser
});
addParser("maxdoc", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new MaxDocValueSource();
}
});
addParser("numdocs", new ValueSourceParser() {
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new NumDocsValueSource();
}
@@ -600,6 +658,7 @@ public abstract class ValueSourceParser
class DateValueSourceParser extends ValueSourceParser {
DateField df = new TrieDateField();
+ @Override
public void init(NamedList args) {
}
@@ -620,6 +679,7 @@ class DateValueSourceParser extends Valu
return f.getType().getValueSource(f, fp);
}
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
String first = fp.parseArg();
String second = fp.parseArg();
@@ -656,10 +716,12 @@ class DateValueSourceParser extends Valu
// "dv"
if (d1 != null && v2 != null)
return new DualFloatFunction(new LongConstValueSource(ms1), v2) {
+ @Override
protected String name() {
return "ms";
}
+ @Override
protected float func(int doc, DocValues aVals, DocValues bVals) {
return ms1 - bVals.longVal(doc);
}
@@ -668,10 +730,12 @@ class DateValueSourceParser extends Valu
// "vd"
if (v1 != null && d2 != null)
return new DualFloatFunction(v1, new LongConstValueSource(ms2)) {
+ @Override
protected String name() {
return "ms";
}
+ @Override
protected float func(int doc, DocValues aVals, DocValues bVals) {
return aVals.longVal(doc) - ms2;
}
@@ -680,10 +744,12 @@ class DateValueSourceParser extends Valu
// "vv"
if (v1 != null && v2 != null)
return new DualFloatFunction(v1, v2) {
+ @Override
protected String name() {
return "ms";
}
+ @Override
protected float func(int doc, DocValues aVals, DocValues bVals) {
return aVals.longVal(doc) - bVals.longVal(doc);
}
@@ -707,42 +773,52 @@ class LongConstValueSource extends Const
this.fv = constant;
}
+ @Override
public String description() {
return "const(" + constant + ")";
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
+ @Override
+ public DocValues getValues(Map context, AtomicReaderContext readerContext) throws IOException {
return new DocValues() {
+ @Override
public float floatVal(int doc) {
return fv;
}
+ @Override
public int intVal(int doc) {
return (int) constant;
}
+ @Override
public long longVal(int doc) {
return constant;
}
+ @Override
public double doubleVal(int doc) {
return dv;
}
+ @Override
public String strVal(int doc) {
return Long.toString(constant);
}
+ @Override
public String toString(int doc) {
return description();
}
};
}
+ @Override
public int hashCode() {
return (int) constant + (int) (constant >>> 32);
}
+ @Override
public boolean equals(Object o) {
if (LongConstValueSource.class != o.getClass()) return false;
LongConstValueSource other = (LongConstValueSource) o;
@@ -794,6 +870,7 @@ abstract class DoubleParser extends Name
public abstract double func(int doc, DocValues vals);
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new Function(fp.parseValueSource());
}
@@ -803,29 +880,36 @@ abstract class DoubleParser extends Name
super(source);
}
+ @Override
public String name() {
return DoubleParser.this.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() {
+ @Override
public float floatVal(int doc) {
return (float)doubleVal(doc);
}
+ @Override
public int intVal(int doc) {
return (int)doubleVal(doc);
}
+ @Override
public long longVal(int doc) {
return (long)doubleVal(doc);
}
+ @Override
public double doubleVal(int doc) {
return func(doc, vals);
}
+ @Override
public String strVal(int doc) {
return Double.toString(doubleVal(doc));
}
+ @Override
public String toString(int doc) {
return name() + '(' + vals.toString(doc) + ')';
}
@@ -842,6 +926,7 @@ abstract class Double2Parser extends Nam
public abstract double func(int doc, DocValues a, DocValues b);
+ @Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
return new Function(fp.parseValueSource(), fp.parseValueSource());
}
@@ -859,29 +944,37 @@ abstract class Double2Parser extends Nam
this.b = b;
}
+ @Override
public String description() {
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);
+ @Override
+ 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() {
+ @Override
public float floatVal(int doc) {
return (float)doubleVal(doc);
}
+ @Override
public int intVal(int doc) {
return (int)doubleVal(doc);
}
+ @Override
public long longVal(int doc) {
return (long)doubleVal(doc);
}
+ @Override
public double doubleVal(int doc) {
return func(doc, aVals, bVals);
}
+ @Override
public String strVal(int doc) {
return Double.toString(doubleVal(doc));
}
+ @Override
public String toString(int doc) {
return name() + '(' + aVals.toString(doc) + ',' + bVals.toString(doc) + ')';
}
@@ -890,10 +983,9 @@ abstract class Double2Parser extends Nam
@Override
public void createWeight(Map context, IndexSearcher searcher) throws IOException {
- a.createWeight(context,searcher);
- b.createWeight(context,searcher);
}
+ @Override
public int hashCode() {
int h = a.hashCode();
h ^= (h << 13) | (h >>> 20);
@@ -903,6 +995,7 @@ abstract class Double2Parser extends Nam
return h;
}
+ @Override
public boolean equals(Object o) {
if (this.getClass() != o.getClass()) return false;
Function other = (Function)o;
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/BoostedQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/BoostedQuery.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/BoostedQuery.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/BoostedQuery.java Wed Feb 9 09:35:27 2011
@@ -19,8 +19,8 @@ package org.apache.solr.search.function;
import org.apache.lucene.search.*;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.util.ToStringUtils;
-import org.apache.solr.search.SolrIndexReader;
import java.io.IOException;
import java.util.Set;
@@ -41,6 +41,7 @@ public class BoostedQuery extends Query
public Query getQuery() { return q; }
public ValueSource getValueSource() { return boostVal; }
+ @Override
public Query rewrite(IndexReader reader) throws IOException {
Query newQ = q.rewrite(reader);
if (newQ == q) return this;
@@ -49,10 +50,12 @@ public class BoostedQuery extends Query
return bq;
}
+ @Override
public void extractTerms(Set terms) {
q.extractTerms(terms);
}
+ @Override
public Weight createWeight(IndexSearcher searcher) throws IOException {
return new BoostedQuery.BoostedWeight(searcher);
}
@@ -60,19 +63,21 @@ public class BoostedQuery extends Query
private class BoostedWeight extends Weight {
IndexSearcher searcher;
Weight qWeight;
- Map context;
+ Map fcontext;
public BoostedWeight(IndexSearcher searcher) throws IOException {
this.searcher = searcher;
this.qWeight = q.weight(searcher);
- this.context = boostVal.newContext();
- boostVal.createWeight(context,searcher);
+ this.fcontext = boostVal.newContext(searcher);
+ boostVal.createWeight(fcontext,searcher);
}
+ @Override
public Query getQuery() {
return BoostedQuery.this;
}
+ @Override
public float getValue() {
return getBoost();
}
@@ -91,33 +96,26 @@ public class BoostedQuery extends Query
}
@Override
- public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException {
- Scorer subQueryScorer = qWeight.scorer(reader, 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, reader, this, subQueryScorer, boostVal);
+ return new BoostedQuery.CustomScorer(context, this, subQueryScorer, boostVal);
}
@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];
-
- Explanation subQueryExpl = qWeight.explain(reader,doc);
+ public Explanation explain(AtomicReaderContext readerContext, int doc) throws IOException {
+ Explanation subQueryExpl = qWeight.explain(readerContext,doc);
if (!subQueryExpl.isMatch()) {
return subQueryExpl;
}
-
- DocValues vals = boostVal.getValues(context, subReaders[readerPos]);
- float sc = subQueryExpl.getValue() * vals.floatVal(doc-readerBase);
+ DocValues vals = boostVal.getValues(fcontext, readerContext);
+ float sc = subQueryExpl.getValue() * vals.floatVal(doc);
Explanation res = new ComplexExplanation(
true, sc, BoostedQuery.this.toString() + ", product of:");
res.addDetail(subQueryExpl);
- res.addDetail(vals.explain(doc-readerBase));
+ res.addDetail(vals.explain(doc));
return res;
}
}
@@ -128,18 +126,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(AtomicReaderContext readerContext, BoostedQuery.BoostedWeight w,
Scorer scorer, ValueSource vs) throws IOException {
- super(similarity);
+ super(w);
this.weight = w;
this.qWeight = w.getValue();
this.scorer = scorer;
- this.reader = reader;
- this.searcher = searcher; // for explain
- this.vals = vs.getValues(weight.context, reader);
+ this.readerContext = readerContext;
+ this.vals = vs.getValues(weight.fcontext, readerContext);
}
@Override
@@ -168,7 +164,7 @@ public class BoostedQuery extends Query
}
public Explanation explain(int doc) throws IOException {
- Explanation subQueryExpl = weight.qWeight.explain(reader,doc);
+ Explanation subQueryExpl = weight.qWeight.explain(readerContext ,doc);
if (!subQueryExpl.isMatch()) {
return subQueryExpl;
}
@@ -182,6 +178,7 @@ public class BoostedQuery extends Query
}
+ @Override
public String toString(String field) {
StringBuilder sb = new StringBuilder();
sb.append("boost(").append(q.toString(field)).append(',').append(boostVal).append(')');
@@ -189,6 +186,7 @@ public class BoostedQuery extends Query
return sb.toString();
}
+ @Override
public boolean equals(Object o) {
if (getClass() != o.getClass()) return false;
BoostedQuery other = (BoostedQuery)o;
@@ -197,6 +195,7 @@ public class BoostedQuery extends Query
&& this.boostVal.equals(other.boostVal);
}
+ @Override
public int hashCode() {
int h = q.hashCode();
h ^= (h << 17) | (h >>> 16);
Modified: lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java?rev=1068809&r1=1068808&r2=1068809&view=diff
==============================================================================
--- lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java (original)
+++ lucene/dev/branches/docvalues/solr/src/java/org/apache/solr/search/function/ByteFieldSource.java Wed Feb 9 09:35:27 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;
@@ -37,12 +37,14 @@ public class ByteFieldSource extends Num
super(creator);
}
+ @Override
public String description() {
return "byte(" + field + ')';
}
- public DocValues getValues(Map context, IndexReader reader) throws IOException {
- final ByteValues vals = cache.getBytes(reader, field, creator);
+ @Override
+ 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() {
@@ -56,26 +58,32 @@ public class ByteFieldSource extends Num
return (short) arr[doc];
}
+ @Override
public float floatVal(int doc) {
return (float) arr[doc];
}
+ @Override
public int intVal(int doc) {
return (int) arr[doc];
}
+ @Override
public long longVal(int doc) {
return (long) arr[doc];
}
+ @Override
public double doubleVal(int doc) {
return (double) arr[doc];
}
+ @Override
public String strVal(int doc) {
return Byte.toString(arr[doc]);
}
+ @Override
public String toString(int doc) {
return description() + '=' + byteVal(doc);
}