You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2015/02/09 00:53:25 UTC
svn commit: r1658277 [10/38] - in /lucene/dev/branches/lucene6005: ./
dev-tools/ dev-tools/idea/solr/contrib/dataimporthandler/
dev-tools/idea/solr/contrib/velocity/ dev-tools/maven/lucene/replicator/
dev-tools/maven/solr/ dev-tools/maven/solr/contrib/...
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortLocale.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortLocale.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortLocale.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSortLocale.java Sun Feb 8 23:53:14 2015
@@ -85,15 +85,18 @@ public class TestSortLocale extends Luce
IndexSearcher is = newSearcher(ir);
int numChecks = atLeast(100);
- for (int i = 0; i < numChecks; i++) {
- String start = TestUtil.randomSimpleString(random());
- String end = TestUtil.randomSimpleString(random());
- Query query = new ConstantScoreQuery(fieldTypes.newStringDocValuesRangeFilter("collated", start, true, end, true));
- doTestRanges(is, start, end, query, collator);
+
+ try {
+ for (int i = 0; i < numChecks; i++) {
+ String start = TestUtil.randomSimpleString(random());
+ String end = TestUtil.randomSimpleString(random());
+ Query query = new ConstantScoreQuery(fieldTypes.newStringDocValuesRangeFilter("collated", start, true, end, true));
+ doTestRanges(is, start, end, query, collator);
+ }
+ } finally {
+ ir.close();
+ dir.close();
}
-
- ir.close();
- dir.close();
}
private void doTestRanges(IndexSearcher is, String startPoint, String endPoint, Query query, Collator collator) throws Exception {
@@ -103,8 +106,8 @@ public class TestSortLocale extends Luce
TopDocs docs = is.search(query, is.getIndexReader().maxDoc());
for (ScoreDoc doc : docs.scoreDocs) {
String value = is.doc(doc.doc).getString("field");
- assertTrue(collator.compare(value, startPoint) >= 0);
- assertTrue(collator.compare(value, endPoint) <= 0);
+ assertTrue(collate(collator, value, startPoint) >= 0);
+ assertTrue(collate(collator, value, endPoint) <= 0);
}
// negative test
@@ -114,7 +117,7 @@ public class TestSortLocale extends Luce
docs = is.search(bq, is.getIndexReader().maxDoc());
for (ScoreDoc doc : docs.scoreDocs) {
String value = is.doc(doc.doc).getString("field");
- assertTrue(collator.compare(value, startPoint) < 0 || collator.compare(value, endPoint) > 0);
+ assertTrue(collate(collator, value, startPoint) < 0 || collate(collator, value, endPoint) > 0);
}
}
}
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestSubScorerFreqs.java Sun Feb 8 23:53:14 2015
@@ -123,8 +123,7 @@ public class TestSubScorerFreqs extends
@Test
public void testTermQuery() throws Exception {
TermQuery q = new TermQuery(new Term("f", "d"));
- CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10,
- true));
+ CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10));
s.search(q, null, c);
final int maxDocs = s.getIndexReader().maxDoc();
assertEquals(maxDocs, c.docCounts.size());
@@ -164,7 +163,7 @@ public class TestSubScorerFreqs extends
for (final Set<String> occur : occurList) {
CountingCollector c = new CountingCollector(TopScoreDocCollector.create(
- 10, true), occur);
+ 10), occur);
s.search(query, null, c);
final int maxDocs = s.getIndexReader().maxDoc();
assertEquals(maxDocs, c.docCounts.size());
@@ -196,8 +195,7 @@ public class TestSubScorerFreqs extends
PhraseQuery q = new PhraseQuery();
q.add(new Term("f", "b"));
q.add(new Term("f", "c"));
- CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10,
- true));
+ CountingCollector c = new CountingCollector(TopScoreDocCollector.create(10));
s.search(q, null, c);
final int maxDocs = s.getIndexReader().maxDoc();
assertEquals(maxDocs, c.docCounts.size());
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTermScorer.java Sun Feb 8 23:53:14 2015
@@ -76,7 +76,7 @@ public class TestTermScorer extends Luce
Weight weight = indexSearcher.createNormalizedWeight(termQuery);
assertTrue(indexSearcher.getTopReaderContext() instanceof LeafReaderContext);
LeafReaderContext context = (LeafReaderContext)indexSearcher.getTopReaderContext();
- BulkScorer ts = weight.bulkScorer(context, true, context.reader().getLiveDocs());
+ BulkScorer ts = weight.bulkScorer(context, context.reader().getLiveDocs());
// we have 2 documents with the term all in them, one document for all the
// other values
final List<TestHit> docs = new ArrayList<>();
@@ -105,11 +105,6 @@ public class TestTermScorer extends Luce
protected void doSetNextReader(LeafReaderContext context) throws IOException {
base = context.docBase;
}
-
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
});
assertTrue("docs Size: " + docs.size() + " is not: " + 2, docs.size() == 2);
TestHit doc0 = docs.get(0);
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTimeLimitingCollector.java Sun Feb 8 23:53:14 2015
@@ -355,11 +355,6 @@ public class TestTimeLimitingCollector e
protected void doSetNextReader(LeafReaderContext context) throws IOException {
docBase = context.docBase;
}
-
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
}
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsCollector.java Sun Feb 8 23:53:14 2015
@@ -30,7 +30,6 @@ public class TestTopDocsCollector extend
private static final class MyTopsDocCollector extends TopDocsCollector<ScoreDoc> {
private int idx = 0;
- private int base = 0;
public MyTopsDocCollector(int size) {
super(new HitQueue(size, false));
@@ -54,24 +53,21 @@ public class TestTopDocsCollector extend
}
@Override
- public void collect(int doc) {
- ++totalHits;
- pq.insertWithOverflow(new ScoreDoc(doc + base, scores[idx++]));
- }
-
- @Override
- protected void doSetNextReader(LeafReaderContext context) throws IOException {
- base = context.docBase;
- }
+ public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException {
+ final int base = context.docBase;
+ return new LeafCollector() {
+
+ @Override
+ public void collect(int doc) {
+ ++totalHits;
+ pq.insertWithOverflow(new ScoreDoc(doc + base, scores[idx++]));
+ }
- @Override
- public void setScorer(Scorer scorer) {
- // Don't do anything. Assign scores in random
- }
-
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
+ @Override
+ public void setScorer(Scorer scorer) {
+ // Don't do anything. Assign scores in random
+ }
+ };
}
}
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopDocsMerge.java Sun Feb 8 23:53:14 2015
@@ -191,7 +191,7 @@ public class TestTopDocsMerge extends Lu
final TopDocs topHits;
if (sort == null) {
if (useFrom) {
- TopScoreDocCollector c = TopScoreDocCollector.create(numHits, random().nextBoolean());
+ TopScoreDocCollector c = TopScoreDocCollector.create(numHits);
searcher.search(query, c);
from = TestUtil.nextInt(random(), 0, numHits - 1);
size = numHits - from;
@@ -210,7 +210,7 @@ public class TestTopDocsMerge extends Lu
topHits = searcher.search(query, numHits);
}
} else {
- final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true, random().nextBoolean());
+ final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true);
searcher.search(query, c);
if (useFrom) {
from = TestUtil.nextInt(random(), 0, numHits - 1);
@@ -254,7 +254,7 @@ public class TestTopDocsMerge extends Lu
if (sort == null) {
subHits = subSearcher.search(w, numHits);
} else {
- final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true, random().nextBoolean());
+ final TopFieldCollector c = TopFieldCollector.create(sort, numHits, true, true, true);
subSearcher.search(w, c);
subHits = c.topDocs(0, numHits);
}
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/search/TestTopFieldCollector.java Sun Feb 8 23:53:14 2015
@@ -61,7 +61,7 @@ public class TestTopFieldCollector exten
for(int i = 0; i < sort.length; i++) {
Query q = new MatchAllDocsQuery();
TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, false,
- false, false, true);
+ false, false);
is.search(q, tdc);
@@ -80,7 +80,7 @@ public class TestTopFieldCollector exten
for(int i = 0; i < sort.length; i++) {
Query q = new MatchAllDocsQuery();
TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, false,
- false, true);
+ false);
is.search(q, tdc);
@@ -100,7 +100,7 @@ public class TestTopFieldCollector exten
for(int i = 0; i < sort.length; i++) {
Query q = new MatchAllDocsQuery();
TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
- false, true);
+ false);
is.search(q, tdc);
@@ -121,7 +121,7 @@ public class TestTopFieldCollector exten
for(int i = 0; i < sort.length; i++) {
Query q = new MatchAllDocsQuery();
TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
- false, true);
+ false);
is.search(q, tdc);
@@ -141,7 +141,7 @@ public class TestTopFieldCollector exten
for(int i = 0; i < sort.length; i++) {
Query q = new MatchAllDocsQuery();
TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true,
- true, true);
+ true);
is.search(q, tdc);
@@ -153,110 +153,13 @@ public class TestTopFieldCollector exten
assertTrue(!Float.isNaN(td.getMaxScore()));
}
}
-
- public void testOutOfOrderDocsScoringSort() throws Exception {
-
- // Two Sort criteria to instantiate the multi/single comparators.
- Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC), new Sort() };
- boolean[][] tfcOptions = new boolean[][] {
- new boolean[] { false, false, false },
- new boolean[] { false, false, true },
- new boolean[] { false, true, false },
- new boolean[] { false, true, true },
- new boolean[] { true, false, false },
- new boolean[] { true, false, true },
- new boolean[] { true, true, false },
- new boolean[] { true, true, true },
- };
- String[] actualTFCClasses = new String[] {
- "OutOfOrderOneComparatorNonScoringCollector",
- "OutOfOrderOneComparatorScoringMaxScoreCollector",
- "OutOfOrderOneComparatorScoringNoMaxScoreCollector",
- "OutOfOrderOneComparatorScoringMaxScoreCollector",
- "OutOfOrderOneComparatorNonScoringCollector",
- "OutOfOrderOneComparatorScoringMaxScoreCollector",
- "OutOfOrderOneComparatorScoringNoMaxScoreCollector",
- "OutOfOrderOneComparatorScoringMaxScoreCollector"
- };
-
- BooleanQuery bq = new BooleanQuery();
- // Add a Query with SHOULD, since bw.scorer() returns BooleanScorer2
- // which delegates to BS if there are no mandatory clauses.
- bq.add(new MatchAllDocsQuery(), Occur.SHOULD);
- // Set minNrShouldMatch to 1 so that BQ will not optimize rewrite to return
- // the clause instead of BQ.
- bq.setMinimumNumberShouldMatch(1);
- for(int i = 0; i < sort.length; i++) {
- for(int j = 0; j < tfcOptions.length; j++) {
- TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10,
- tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
-
- assertTrue(tdc.getClass().getName().endsWith("$"+actualTFCClasses[j]));
-
- is.search(bq, tdc);
-
- TopDocs td = tdc.topDocs();
- ScoreDoc[] sd = td.scoreDocs;
- assertEquals(10, sd.length);
- }
- }
- }
-
- // OutOfOrderMulti*Collector
- public void testOutOfOrderDocsScoringSortMulti() throws Exception {
-
- // Two Sort criteria to instantiate the multi/single comparators.
- Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC, SortField.FIELD_SCORE) };
- boolean[][] tfcOptions = new boolean[][] {
- new boolean[] { false, false, false },
- new boolean[] { false, false, true },
- new boolean[] { false, true, false },
- new boolean[] { false, true, true },
- new boolean[] { true, false, false },
- new boolean[] { true, false, true },
- new boolean[] { true, true, false },
- new boolean[] { true, true, true },
- };
- String[] actualTFCClasses = new String[] {
- "OutOfOrderMultiComparatorNonScoringCollector",
- "OutOfOrderMultiComparatorScoringMaxScoreCollector",
- "OutOfOrderMultiComparatorScoringNoMaxScoreCollector",
- "OutOfOrderMultiComparatorScoringMaxScoreCollector",
- "OutOfOrderMultiComparatorNonScoringCollector",
- "OutOfOrderMultiComparatorScoringMaxScoreCollector",
- "OutOfOrderMultiComparatorScoringNoMaxScoreCollector",
- "OutOfOrderMultiComparatorScoringMaxScoreCollector"
- };
-
- BooleanQuery bq = new BooleanQuery();
- // Add a Query with SHOULD, since bw.scorer() returns BooleanScorer2
- // which delegates to BS if there are no mandatory clauses.
- bq.add(new MatchAllDocsQuery(), Occur.SHOULD);
- // Set minNrShouldMatch to 1 so that BQ will not optimize rewrite to return
- // the clause instead of BQ.
- bq.setMinimumNumberShouldMatch(1);
- for(int i = 0; i < sort.length; i++) {
- for(int j = 0; j < tfcOptions.length; j++) {
- TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10,
- tfcOptions[j][0], tfcOptions[j][1], tfcOptions[j][2], false);
- assertTrue(tdc.getClass().getName().endsWith("$"+actualTFCClasses[j]));
-
- is.search(bq, tdc);
-
- TopDocs td = tdc.topDocs();
- ScoreDoc[] sd = td.scoreDocs;
- assertEquals(10, sd.length);
- }
- }
- }
-
public void testSortWithScoreAndMaxScoreTrackingNoResults() throws Exception {
// Two Sort criteria to instantiate the multi/single comparators.
Sort[] sort = new Sort[] {new Sort(SortField.FIELD_DOC), new Sort() };
for(int i = 0; i < sort.length; i++) {
- TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true, true, true);
+ TopDocsCollector<Entry> tdc = TopFieldCollector.create(sort[i], 10, true, true, true);
TopDocs td = tdc.topDocs();
assertEquals(0, td.totalHits);
assertTrue(Float.isNaN(td.getMaxScore()));
Modified: lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/TestUnicodeUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/TestUnicodeUtil.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/TestUnicodeUtil.java (original)
+++ lucene/dev/branches/lucene6005/lucene/core/src/test/org/apache/lucene/util/TestUnicodeUtil.java Sun Feb 8 23:53:14 2015
@@ -197,9 +197,7 @@ public class TestUnicodeUtil extends Luc
assertFalse(rc == -1);
assertEquals(cpString.substring(rs, rs + rc), str);
continue;
- } catch (IndexOutOfBoundsException e1) {
- // Ignored.
- } catch (IllegalArgumentException e2) {
+ } catch (IndexOutOfBoundsException | IllegalArgumentException e1) {
// Ignored.
}
assertTrue(rc == -1);
Modified: lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java (original)
+++ lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/ExpressionComparator.java Sun Feb 8 23:53:14 2015
@@ -24,10 +24,11 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Scorer;
/** A custom comparator for sorting documents by an expression */
-class ExpressionComparator extends FieldComparator<Double> {
+class ExpressionComparator extends FieldComparator<Double> implements LeafFieldComparator {
private final double[] values;
private double bottom;
private double topValue;
@@ -44,7 +45,6 @@ class ExpressionComparator extends Field
// TODO: change FieldComparator.setScorer to throw IOException and remove this try-catch
@Override
public void setScorer(Scorer scorer) {
- super.setScorer(scorer);
// TODO: might be cleaner to lazy-init 'source' and set scorer after?
assert readerContext != null;
try {
@@ -83,7 +83,7 @@ class ExpressionComparator extends Field
}
@Override
- public FieldComparator<Double> setNextReader(LeafReaderContext context) throws IOException {
+ public LeafFieldComparator getLeafComparator(LeafReaderContext context) throws IOException {
this.readerContext = context;
return this;
}
Modified: lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java (original)
+++ lucene/dev/branches/lucene6005/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java Sun Feb 8 23:53:14 2015
@@ -565,7 +565,7 @@ public class JavascriptCompiler {
checkFunction(method, JavascriptCompiler.class.getClassLoader());
map.put(call, method);
}
- } catch (NoSuchMethodException | ClassNotFoundException | IOException e) {
+ } catch (ReflectiveOperationException | IOException e) {
throw new Error("Cannot resolve function", e);
}
DEFAULT_FUNCTIONS = Collections.unmodifiableMap(map);
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSideways.java Sun Feb 8 23:53:14 2015
@@ -199,8 +199,7 @@ public class DrillSideways {
after,
true,
doDocScores,
- doMaxScore,
- true);
+ doMaxScore);
DrillSidewaysResult r = search(query, hitCollector);
return new DrillSidewaysResult(r.facets, hitCollector.topDocs());
} else {
@@ -227,7 +226,7 @@ public class DrillSideways {
limit = 1; // the collector does not alow numHits = 0
}
topN = Math.min(topN, limit);
- TopScoreDocCollector hitCollector = TopScoreDocCollector.create(topN, after, true);
+ TopScoreDocCollector hitCollector = TopScoreDocCollector.create(topN, after);
DrillSidewaysResult r = search(query, hitCollector);
return new DrillSidewaysResult(r.facets, hitCollector.topDocs());
}
@@ -236,12 +235,7 @@ public class DrillSideways {
* (e.g., {@code ToParentBlockJoinCollector}) expects all
* sub-scorers to be positioned on the document being
* collected. This will cause some performance loss;
- * default is false. Note that if you return true from
- * this method (in a subclass) be sure your collector
- * also returns false from {@link
- * LeafCollector#acceptsDocsOutOfOrder}: this will trick
- * {@code BooleanQuery} into also scoring all subDocs at
- * once. */
+ * default is false. */
protected boolean scoreSubDocsAtOnce() {
return false;
}
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysQuery.java Sun Feb 8 23:53:14 2015
@@ -111,20 +111,13 @@ class DrillSidewaysQuery extends Query {
}
@Override
- public boolean scoresDocsOutOfOrder() {
- // TODO: would be nice if AssertingIndexSearcher
- // confirmed this for us
- return false;
- }
-
- @Override
public Scorer scorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
// We can only run as a top scorer:
throw new UnsupportedOperationException();
}
@Override
- public BulkScorer bulkScorer(LeafReaderContext context, boolean scoreDocsInOrder, Bits acceptDocs) throws IOException {
+ public BulkScorer bulkScorer(LeafReaderContext context, Bits acceptDocs) throws IOException {
// TODO: it could be better if we take acceptDocs
// into account instead of baseScorer?
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/DrillSidewaysScorer.java Sun Feb 8 23:53:14 2015
@@ -64,7 +64,10 @@ class DrillSidewaysScorer extends BulkSc
}
@Override
- public boolean score(LeafCollector collector, int maxDoc) throws IOException {
+ public int score(LeafCollector collector, int min, int maxDoc) throws IOException {
+ if (min != 0) {
+ throw new IllegalArgumentException("min must be 0, got " + min);
+ }
if (maxDoc != Integer.MAX_VALUE) {
throw new IllegalArgumentException("maxDoc must be Integer.MAX_VALUE");
}
@@ -150,7 +153,7 @@ class DrillSidewaysScorer extends BulkSc
doUnionScoring(collector, disis, sidewaysCollectors);
}
- return false;
+ return Integer.MAX_VALUE;
}
/** Used when base query is highly constraining vs the
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/FacetsCollector.java Sun Feb 8 23:53:14 2015
@@ -155,14 +155,6 @@ public class FacetsCollector extends Sim
}
@Override
- public final boolean acceptsDocsOutOfOrder() {
- // If we are keeping scores then we require in-order
- // because we append each score to the float[] and
- // expect that they correlate in order to the hits:
- return keepScores == false;
- }
-
- @Override
public final void collect(int doc) throws IOException {
docs.addDoc(doc);
if (keepScores) {
@@ -284,14 +276,9 @@ public class FacetsCollector extends Sim
(FieldDoc) after,
fillFields,
doDocScores,
- doMaxScore,
- false);
+ doMaxScore);
} else {
- // TODO: can we pass the right boolean for
- // in-order instead of hardwired to false...? we'd
- // need access to the protected IS.search methods
- // taking Weight... could use reflection...
- hitsCollector = TopScoreDocCollector.create(n, after, false);
+ hitsCollector = TopScoreDocCollector.create(n, after);
}
searcher.search(q, MultiCollector.wrap(hitsCollector, fc));
return hitsCollector.topDocs();
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyMergeUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyMergeUtils.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyMergeUtils.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/java/org/apache/lucene/facet/taxonomy/TaxonomyMergeUtils.java Sun Feb 8 23:53:14 2015
@@ -10,7 +10,9 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.CodecReader;
import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.index.SlowCodecReaderWrapper;
import org.apache.lucene.store.Directory;
/*
@@ -52,11 +54,11 @@ public abstract class TaxonomyMergeUtils
try {
List<LeafReaderContext> leaves = reader.leaves();
int numReaders = leaves.size();
- LeafReader wrappedLeaves[] = new LeafReader[numReaders];
+ CodecReader wrappedLeaves[] = new CodecReader[numReaders];
for (int i = 0; i < numReaders; i++) {
- wrappedLeaves[i] = new OrdinalMappingLeafReader(leaves.get(i).reader(), ordinalMap, srcConfig);
+ wrappedLeaves[i] = SlowCodecReaderWrapper.wrap(new OrdinalMappingLeafReader(leaves.get(i).reader(), ordinalMap, srcConfig));
}
- destIndexWriter.addIndexes(new MultiReader(wrappedLeaves));
+ destIndexWriter.addIndexes(wrappedLeaves);
// commit changes to taxonomy and index respectively.
destTaxoWriter.commit();
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/AssertingSubDocsAtOnceCollector.java Sun Feb 8 23:53:14 2015
@@ -54,9 +54,4 @@ class AssertingSubDocsAtOnceCollector ex
}
}
}
-
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
}
Modified: lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java (original)
+++ lucene/dev/branches/lucene6005/lucene/facet/src/test/org/apache/lucene/facet/TestDrillSideways.java Sun Feb 8 23:53:14 2015
@@ -687,11 +687,6 @@ public class TestDrillSideways extends F
protected void doSetNextReader(LeafReaderContext context) throws IOException {
lastDocID = -1;
}
-
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
});
// Also separately verify that DS respects the
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupHeadsCollector.java Sun Feb 8 23:53:14 2015
@@ -126,11 +126,6 @@ public abstract class AbstractAllGroupHe
groupHead.updateDocHead(doc);
}
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
-
/**
* Contains the result of group head retrieval.
* To prevent new object creations of this class for every collect.
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractAllGroupsCollector.java Sun Feb 8 23:53:14 2015
@@ -62,8 +62,4 @@ public abstract class AbstractAllGroupsC
@Override
public void setScorer(Scorer scorer) throws IOException {}
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
}
\ No newline at end of file
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractDistinctValuesCollector.java Sun Feb 8 23:53:14 2015
@@ -37,11 +37,6 @@ public abstract class AbstractDistinctVa
*/
public abstract List<GC> getGroups();
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
-
/**
* Returned by {@link AbstractDistinctValuesCollector#getGroups()},
* representing the value and set of distinct values for the group.
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractFirstPassGroupingCollector.java Sun Feb 8 23:53:14 2015
@@ -37,6 +37,7 @@ abstract public class AbstractFirstPassG
private final Sort groupSort;
private final FieldComparator<?>[] comparators;
+ private final LeafFieldComparator[] leafComparators;
private final int[] reversed;
private final int topNGroups;
private final HashMap<GROUP_VALUE_TYPE, CollectedSearchGroup<GROUP_VALUE_TYPE>> groupMap;
@@ -60,7 +61,6 @@ abstract public class AbstractFirstPassG
* @param topNGroups How many top groups to keep.
* @throws IOException If I/O related errors occur
*/
- @SuppressWarnings({"unchecked","rawtypes"})
public AbstractFirstPassGroupingCollector(Sort groupSort, int topNGroups) throws IOException {
if (topNGroups < 1) {
throw new IllegalArgumentException("topNGroups must be >= 1 (got " + topNGroups + ")");
@@ -74,6 +74,7 @@ abstract public class AbstractFirstPassG
final SortField[] sortFields = groupSort.getSort();
comparators = new FieldComparator[sortFields.length];
+ leafComparators = new LeafFieldComparator[sortFields.length];
compIDXEnd = comparators.length - 1;
reversed = new int[sortFields.length];
for (int i = 0; i < sortFields.length; i++) {
@@ -137,7 +138,7 @@ abstract public class AbstractFirstPassG
@Override
public void setScorer(Scorer scorer) throws IOException {
- for (FieldComparator<?> comparator : comparators) {
+ for (LeafFieldComparator comparator : leafComparators) {
comparator.setScorer(scorer);
}
}
@@ -157,7 +158,7 @@ abstract public class AbstractFirstPassG
// wasted effort as we will most likely be updating an existing group.
if (orderedGroups != null) {
for (int compIDX = 0;; compIDX++) {
- final int c = reversed[compIDX] * comparators[compIDX].compareBottom(doc);
+ final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
if (c < 0) {
// Definitely not competitive. So don't even bother to continue
return;
@@ -197,7 +198,7 @@ abstract public class AbstractFirstPassG
sg.groupValue = copyDocGroupValue(groupValue, null);
sg.comparatorSlot = groupMap.size();
sg.topDoc = docBase + doc;
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.copy(sg.comparatorSlot, doc);
}
groupMap.put(sg.groupValue, sg);
@@ -223,7 +224,7 @@ abstract public class AbstractFirstPassG
bottomGroup.groupValue = copyDocGroupValue(groupValue, bottomGroup.groupValue);
bottomGroup.topDoc = docBase + doc;
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.copy(bottomGroup.comparatorSlot, doc);
}
@@ -232,7 +233,7 @@ abstract public class AbstractFirstPassG
assert orderedGroups.size() == topNGroups;
final int lastComparatorSlot = orderedGroups.last().comparatorSlot;
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.setBottom(lastComparatorSlot);
}
@@ -241,17 +242,16 @@ abstract public class AbstractFirstPassG
// Update existing group:
for (int compIDX = 0;; compIDX++) {
- final FieldComparator<?> fc = comparators[compIDX];
- fc.copy(spareSlot, doc);
+ leafComparators[compIDX].copy(spareSlot, doc);
- final int c = reversed[compIDX] * fc.compare(group.comparatorSlot, spareSlot);
+ final int c = reversed[compIDX] * comparators[compIDX].compare(group.comparatorSlot, spareSlot);
if (c < 0) {
// Definitely not competitive.
return;
} else if (c > 0) {
// Definitely competitive; set remaining comparators:
for (int compIDX2=compIDX+1; compIDX2<comparators.length; compIDX2++) {
- comparators[compIDX2].copy(spareSlot, doc);
+ leafComparators[compIDX2].copy(spareSlot, doc);
}
break;
} else if (compIDX == compIDXEnd) {
@@ -288,7 +288,7 @@ abstract public class AbstractFirstPassG
final CollectedSearchGroup<?> newLast = orderedGroups.last();
// If we changed the value of the last group, or changed which group was last, then update bottom:
if (group == newLast || prevLast != newLast) {
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.setBottom(newLast.comparatorSlot);
}
}
@@ -315,21 +315,16 @@ abstract public class AbstractFirstPassG
orderedGroups.addAll(groupMap.values());
assert orderedGroups.size() > 0;
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.setBottom(orderedGroups.last().comparatorSlot);
}
}
@Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
-
- @Override
protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
docBase = readerContext.docBase;
for (int i=0; i<comparators.length; i++) {
- comparators[i] = comparators[i].setNextReader(readerContext);
+ leafComparators[i] = comparators[i].getLeafComparator(readerContext);
}
}
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractGroupFacetCollector.java Sun Feb 8 23:53:14 2015
@@ -109,11 +109,6 @@ public abstract class AbstractGroupFacet
public void setScorer(Scorer scorer) throws IOException {
}
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
-
/**
* The grouped facet result. Containing grouped facet entries, total count and total missing count.
*/
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/AbstractSecondPassGroupingCollector.java Sun Feb 8 23:53:14 2015
@@ -69,10 +69,10 @@ public abstract class AbstractSecondPass
final TopDocsCollector<?> collector;
if (withinGroupSort == null) {
// Sort by score
- collector = TopScoreDocCollector.create(maxDocsPerGroup, true);
+ collector = TopScoreDocCollector.create(maxDocsPerGroup);
} else {
// Sort by fields
- collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, getScores, getMaxScores, true);
+ collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, getScores, getMaxScores);
}
groupMap.put(group.groupValue,
new SearchGroupDocs<>(group.groupValue,
@@ -83,7 +83,7 @@ public abstract class AbstractSecondPass
@Override
public void setScorer(Scorer scorer) throws IOException {
for (SearchGroupDocs<GROUP_VALUE_TYPE> group : groupMap.values()) {
- group.collector.setScorer(scorer);
+ group.leafCollector.setScorer(scorer);
}
}
@@ -93,7 +93,7 @@ public abstract class AbstractSecondPass
SearchGroupDocs<GROUP_VALUE_TYPE> group = retrieveGroup(doc);
if (group != null) {
totalGroupedHitCount++;
- group.collector.collect(doc);
+ group.leafCollector.collect(doc);
}
}
@@ -110,15 +110,10 @@ public abstract class AbstractSecondPass
protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
//System.out.println("SP.setNextReader");
for (SearchGroupDocs<GROUP_VALUE_TYPE> group : groupMap.values()) {
- group.collector.getLeafCollector(readerContext);
+ group.leafCollector = group.collector.getLeafCollector(readerContext);
}
}
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
-
public TopGroups<GROUP_VALUE_TYPE> getTopGroups(int withinGroupOffset) {
@SuppressWarnings({"unchecked","rawtypes"})
final GroupDocs<GROUP_VALUE_TYPE>[] groupDocsResult = (GroupDocs<GROUP_VALUE_TYPE>[]) new GroupDocs[groups.size()];
@@ -151,6 +146,7 @@ public abstract class AbstractSecondPass
public final GROUP_VALUE_TYPE groupValue;
public final TopDocsCollector<?> collector;
+ public LeafCollector leafCollector;
public SearchGroupDocs(GROUP_VALUE_TYPE groupValue, TopDocsCollector<?> collector) {
this.groupValue = groupValue;
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/BlockGroupingCollector.java Sun Feb 8 23:53:14 2015
@@ -69,6 +69,7 @@ public class BlockGroupingCollector exte
private final boolean needsScores;
private final FieldComparator<?>[] comparators;
+ private final LeafFieldComparator[] leafComparators;
private final int[] reversed;
private final int compIDXEnd;
private int bottomSlot;
@@ -202,7 +203,7 @@ public class BlockGroupingCollector exte
bottomSlot = bottomGroup.comparatorSlot;
//System.out.println(" set bottom=" + bottomSlot);
for (int i = 0; i < comparators.length; i++) {
- comparators[i].setBottom(bottomSlot);
+ leafComparators[i].setBottom(bottomSlot);
}
//System.out.println(" QUEUE FULL");
} else {
@@ -231,7 +232,7 @@ public class BlockGroupingCollector exte
//System.out.println(" set bottom=" + bottomSlot);
for (int i = 0; i < comparators.length; i++) {
- comparators[i].setBottom(bottomSlot);
+ leafComparators[i].setBottom(bottomSlot);
}
}
}
@@ -278,6 +279,7 @@ public class BlockGroupingCollector exte
final SortField[] sortFields = groupSort.getSort();
comparators = new FieldComparator<?>[sortFields.length];
+ leafComparators = new LeafFieldComparator[sortFields.length];
compIDXEnd = comparators.length - 1;
reversed = new int[sortFields.length];
for (int i = 0; i < sortFields.length; i++) {
@@ -343,21 +345,21 @@ public class BlockGroupingCollector exte
if (!needsScores) {
throw new IllegalArgumentException("cannot sort by relevance within group: needsScores=false");
}
- collector = TopScoreDocCollector.create(maxDocsPerGroup, true);
+ collector = TopScoreDocCollector.create(maxDocsPerGroup);
} else {
// Sort by fields
- collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, needsScores, needsScores, true);
+ collector = TopFieldCollector.create(withinGroupSort, maxDocsPerGroup, fillSortFields, needsScores, needsScores);
}
- collector.setScorer(fakeScorer);
- collector.getLeafCollector(og.readerContext);
+ LeafCollector leafCollector = collector.getLeafCollector(og.readerContext);
+ leafCollector.setScorer(fakeScorer);
for(int docIDX=0;docIDX<og.count;docIDX++) {
final int doc = og.docs[docIDX];
fakeScorer.doc = doc;
if (needsScores) {
fakeScorer.score = og.scores[docIDX];
}
- collector.collect(doc);
+ leafCollector.collect(doc);
}
totalGroupedHitCount += og.count;
@@ -402,7 +404,7 @@ public class BlockGroupingCollector exte
@Override
public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
- for (FieldComparator<?> comparator : comparators) {
+ for (LeafFieldComparator comparator : leafComparators) {
comparator.setScorer(scorer);
}
}
@@ -443,7 +445,7 @@ public class BlockGroupingCollector exte
assert !queueFull;
//System.out.println(" init copy to bottomSlot=" + bottomSlot);
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.copy(bottomSlot, doc);
fc.setBottom(bottomSlot);
}
@@ -451,7 +453,7 @@ public class BlockGroupingCollector exte
} else {
// Compare to bottomSlot
for (int compIDX = 0;; compIDX++) {
- final int c = reversed[compIDX] * comparators[compIDX].compareBottom(doc);
+ final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
if (c < 0) {
// Definitely not competitive -- done
return;
@@ -468,7 +470,7 @@ public class BlockGroupingCollector exte
//System.out.println(" best w/in group!");
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.copy(bottomSlot, doc);
// Necessary because some comparators cache
// details of bottom slot; this forces them to
@@ -481,7 +483,7 @@ public class BlockGroupingCollector exte
// We're not sure this group will make it into the
// queue yet
for (int compIDX = 0;; compIDX++) {
- final int c = reversed[compIDX] * comparators[compIDX].compareBottom(doc);
+ final int c = reversed[compIDX] * leafComparators[compIDX].compareBottom(doc);
if (c < 0) {
// Definitely not competitive -- done
//System.out.println(" doc doesn't compete w/ top groups");
@@ -498,7 +500,7 @@ public class BlockGroupingCollector exte
}
}
groupCompetes = true;
- for (FieldComparator<?> fc : comparators) {
+ for (LeafFieldComparator fc : leafComparators) {
fc.copy(bottomSlot, doc);
// Necessary because some comparators cache
// details of bottom slot; this forces them to
@@ -511,11 +513,6 @@ public class BlockGroupingCollector exte
}
@Override
- public boolean acceptsDocsOutOfOrder() {
- return false;
- }
-
- @Override
protected void doSetNextReader(LeafReaderContext readerContext) throws IOException {
if (subDocUpto != 0) {
processGroup();
@@ -528,7 +525,7 @@ public class BlockGroupingCollector exte
currentReaderContext = readerContext;
for (int i=0; i<comparators.length; i++) {
- comparators[i] = comparators[i].setNextReader(readerContext);
+ leafComparators[i] = comparators[i].getLeafComparator(readerContext);
}
}
}
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/SearchGroup.java Sun Feb 8 23:53:14 2015
@@ -18,6 +18,7 @@ package org.apache.lucene.search.groupin
*/
import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
@@ -158,7 +159,7 @@ public class SearchGroup<GROUP_VALUE_TYP
public GroupComparator(Sort groupSort) throws IOException {
final SortField[] sortFields = groupSort.getSort();
- comparators = new FieldComparator<?>[sortFields.length];
+ comparators = new FieldComparator[sortFields.length];
reversed = new int[sortFields.length];
for (int compIDX = 0; compIDX < sortFields.length; compIDX++) {
final SortField sortField = sortFields[compIDX];
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/function/FunctionAllGroupHeadsCollector.java Sun Feb 8 23:53:14 2015
@@ -21,6 +21,7 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
@@ -94,7 +95,7 @@ public class FunctionAllGroupHeadsCollec
public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
for (GroupHead groupHead : groups.values()) {
- for (FieldComparator<?> comparator : groupHead.comparators) {
+ for (LeafFieldComparator comparator : groupHead.leafComparators) {
comparator.setScorer(scorer);
}
}
@@ -109,7 +110,7 @@ public class FunctionAllGroupHeadsCollec
for (GroupHead groupHead : groups.values()) {
for (int i = 0; i < groupHead.comparators.length; i++) {
- groupHead.comparators[i] = groupHead.comparators[i].setNextReader(context);
+ groupHead.leafComparators[i] = groupHead.comparators[i].getLeafComparator(context);
}
}
}
@@ -120,28 +121,31 @@ public class FunctionAllGroupHeadsCollec
public class GroupHead extends AbstractAllGroupHeadsCollector.GroupHead<MutableValue> {
final FieldComparator<?>[] comparators;
+ final LeafFieldComparator[] leafComparators;
@SuppressWarnings({"unchecked","rawtypes"})
private GroupHead(MutableValue groupValue, Sort sort, int doc) throws IOException {
super(groupValue, doc + readerContext.docBase);
final SortField[] sortFields = sort.getSort();
comparators = new FieldComparator[sortFields.length];
+ leafComparators = new LeafFieldComparator[sortFields.length];
for (int i = 0; i < sortFields.length; i++) {
- comparators[i] = sortFields[i].getComparator(1, i).setNextReader(readerContext);
- comparators[i].setScorer(scorer);
- comparators[i].copy(0, doc);
- comparators[i].setBottom(0);
+ comparators[i] = sortFields[i].getComparator(1, i);
+ leafComparators[i] = comparators[i].getLeafComparator(readerContext);
+ leafComparators[i].setScorer(scorer);
+ leafComparators[i].copy(0, doc);
+ leafComparators[i].setBottom(0);
}
}
@Override
public int compare(int compIDX, int doc) throws IOException {
- return comparators[compIDX].compareBottom(doc);
+ return leafComparators[compIDX].compareBottom(doc);
}
@Override
public void updateDocHead(int doc) throws IOException {
- for (FieldComparator<?> comparator : comparators) {
+ for (LeafFieldComparator comparator : leafComparators) {
comparator.copy(0, doc);
comparator.setBottom(0);
}
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/java/org/apache/lucene/search/grouping/term/TermAllGroupHeadsCollector.java Sun Feb 8 23:53:14 2015
@@ -21,6 +21,7 @@ import org.apache.lucene.index.LeafReade
import org.apache.lucene.index.DocValues;
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.search.FieldComparator;
+import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
@@ -164,7 +165,7 @@ public abstract class TermAllGroupHeadsC
for (GroupHead groupHead : groups.values()) {
for (int i = 0; i < groupHead.comparators.length; i++) {
- groupHead.comparators[i] = groupHead.comparators[i].setNextReader(context);
+ groupHead.leafComparators[i] = groupHead.comparators[i].getLeafComparator(context);
}
}
}
@@ -173,7 +174,7 @@ public abstract class TermAllGroupHeadsC
public void setScorer(Scorer scorer) throws IOException {
this.scorer = scorer;
for (GroupHead groupHead : groups.values()) {
- for (FieldComparator<?> comparator : groupHead.comparators) {
+ for (LeafFieldComparator comparator : groupHead.leafComparators) {
comparator.setScorer(scorer);
}
}
@@ -181,28 +182,31 @@ public abstract class TermAllGroupHeadsC
class GroupHead extends AbstractAllGroupHeadsCollector.GroupHead<BytesRef> {
- final FieldComparator<?>[] comparators;
+ final FieldComparator[] comparators;
+ final LeafFieldComparator[] leafComparators;
private GroupHead(BytesRef groupValue, Sort sort, int doc) throws IOException {
super(groupValue, doc + readerContext.docBase);
final SortField[] sortFields = sort.getSort();
comparators = new FieldComparator[sortFields.length];
+ leafComparators = new LeafFieldComparator[sortFields.length];
for (int i = 0; i < sortFields.length; i++) {
- comparators[i] = sortFields[i].getComparator(1, i).setNextReader(readerContext);
- comparators[i].setScorer(scorer);
- comparators[i].copy(0, doc);
- comparators[i].setBottom(0);
+ comparators[i] = sortFields[i].getComparator(1, i);
+ leafComparators[i] = comparators[i].getLeafComparator(readerContext);
+ leafComparators[i].setScorer(scorer);
+ leafComparators[i].copy(0, doc);
+ leafComparators[i].setBottom(0);
}
}
@Override
public int compare(int compIDX, int doc) throws IOException {
- return comparators[compIDX].compareBottom(doc);
+ return leafComparators[compIDX].compareBottom(doc);
}
@Override
public void updateDocHead(int doc) throws IOException {
- for (FieldComparator<?> comparator : comparators) {
+ for (LeafFieldComparator comparator : leafComparators) {
comparator.copy(0, doc);
comparator.setBottom(0);
}
Modified: lucene/dev/branches/lucene6005/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java (original)
+++ lucene/dev/branches/lucene6005/lucene/grouping/src/test/org/apache/lucene/search/grouping/TestGrouping.java Sun Feb 8 23:53:14 2015
@@ -835,7 +835,7 @@ public class TestGrouping extends Lucene
}
} else {
// Collect only into cache, then replay multiple times:
- c = cCache = CachingCollector.create(false, true, maxCacheMB);
+ c = cCache = CachingCollector.create(true, maxCacheMB);
}
} else {
cCache = null;
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/Highlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/Highlighter.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/Highlighter.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/Highlighter.java Sun Feb 8 23:53:14 2015
@@ -225,12 +225,12 @@ public class Highlighter
throw new InvalidTokenOffsetsException("Token "+ termAtt.toString()
+" exceeds length of provided text sized "+text.length());
}
- if((tokenGroup.numTokens>0)&&(tokenGroup.isDistinct()))
+ if((tokenGroup.getNumTokens() >0)&&(tokenGroup.isDistinct()))
{
//the current token is distinct from previous tokens -
// markup the cached token group info
- startOffset = tokenGroup.matchStartOffset;
- endOffset = tokenGroup.matchEndOffset;
+ startOffset = tokenGroup.getStartOffset();
+ endOffset = tokenGroup.getEndOffset();
tokenText = text.substring(startOffset, endOffset);
String markedUpText=formatter.highlightTerm(encoder.encodeText(tokenText), tokenGroup);
//store any whitespace etc from between this and last group
@@ -261,11 +261,11 @@ public class Highlighter
}
currentFrag.setScore(fragmentScorer.getFragmentScore());
- if(tokenGroup.numTokens>0)
+ if(tokenGroup.getNumTokens() >0)
{
//flush the accumulated text (same code as in above loop)
- startOffset = tokenGroup.matchStartOffset;
- endOffset = tokenGroup.matchEndOffset;
+ startOffset = tokenGroup.getStartOffset();
+ endOffset = tokenGroup.getEndOffset();
tokenText = text.substring(startOffset, endOffset);
String markedUpText=formatter.highlightTerm(encoder.encodeText(tokenText), tokenGroup);
//store any whitespace etc from between this and last group
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/QueryScorer.java Sun Feb 8 23:53:14 2015
@@ -54,6 +54,7 @@ public class QueryScorer implements Scor
private boolean skipInitExtractor;
private boolean wrapToCaching = true;
private int maxCharsToAnalyze;
+ private boolean usePayloads = false;
/**
* @param query Query to use for highlighting
@@ -213,6 +214,7 @@ public class QueryScorer implements Scor
qse.setMaxDocCharsToAnalyze(maxCharsToAnalyze);
qse.setExpandMultiTermQuery(expandMultiTermQuery);
qse.setWrapIfNotCachingTokenFilter(wrapToCaching);
+ qse.setUsePayloads(usePayloads);
if (reader == null) {
this.fieldWeightedSpanTerms = qse.getWeightedSpanTerms(query,
tokenStream, field);
@@ -259,7 +261,19 @@ public class QueryScorer implements Scor
public void setExpandMultiTermQuery(boolean expandMultiTermQuery) {
this.expandMultiTermQuery = expandMultiTermQuery;
}
-
+
+ /**
+ * Whether or not we should capture payloads in {@link MemoryIndex} at each position so that queries can access them.
+ * This does not apply to term vector based TokenStreams, which support payloads only when the term vector has them.
+ */
+ public boolean isUsePayloads() {
+ return usePayloads;
+ }
+
+ public void setUsePayloads(boolean usePayloads) {
+ this.usePayloads = usePayloads;
+ }
+
/**
* By default, {@link TokenStream}s that are not of the type
* {@link CachingTokenFilter} are wrapped in a {@link CachingTokenFilter} to
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenGroup.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenGroup.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenGroup.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/TokenGroup.java Sun Feb 8 23:53:14 2015
@@ -24,18 +24,20 @@ import org.apache.lucene.analysis.tokena
/**
* One, or several overlapping tokens, along with the score(s) and the scope of
- * the original text
+ * the original text.
*/
public class TokenGroup {
private static final int MAX_NUM_TOKENS_PER_GROUP = 50;
- Token [] tokens=new Token[MAX_NUM_TOKENS_PER_GROUP];
- float[] scores = new float[MAX_NUM_TOKENS_PER_GROUP];
- int numTokens = 0;
- int startOffset = 0;
- int endOffset = 0;
- float tot;
- int matchStartOffset, matchEndOffset;
+
+ private Token[] tokens = new Token[MAX_NUM_TOKENS_PER_GROUP];
+ private float[] scores = new float[MAX_NUM_TOKENS_PER_GROUP];
+ private int numTokens = 0;
+ private int startOffset = 0;
+ private int endOffset = 0;
+ private float tot;
+ private int matchStartOffset;
+ private int matchEndOffset;
private OffsetAttribute offsetAtt;
private CharTermAttribute termAtt;
@@ -47,8 +49,8 @@ public class TokenGroup {
void addToken(float score) {
if (numTokens < MAX_NUM_TOKENS_PER_GROUP) {
- int termStartOffset = offsetAtt.startOffset();
- int termEndOffset = offsetAtt.endOffset();
+ final int termStartOffset = offsetAtt.startOffset();
+ final int termEndOffset = offsetAtt.endOffset();
if (numTokens == 0) {
startOffset = matchStartOffset = termStartOffset;
endOffset = matchEndOffset = termEndOffset;
@@ -58,8 +60,8 @@ public class TokenGroup {
endOffset = Math.max(endOffset, termEndOffset);
if (score > 0) {
if (tot == 0) {
- matchStartOffset = offsetAtt.startOffset();
- matchEndOffset = offsetAtt.endOffset();
+ matchStartOffset = termStartOffset;
+ matchEndOffset = termEndOffset;
} else {
matchStartOffset = Math.min(matchStartOffset, termStartOffset);
matchEndOffset = Math.max(matchEndOffset, termEndOffset);
@@ -84,15 +86,14 @@ public class TokenGroup {
numTokens = 0;
tot = 0;
}
-
- /*
- * @param index a value between 0 and numTokens -1
- * @return the "n"th token
- */
- public Token getToken(int index)
- {
- return tokens[index];
- }
+
+ /**
+ * @param index a value between 0 and numTokens -1
+ * @return the "n"th token
+ */
+ public Token getToken(int index) {
+ return tokens[index];
+ }
/**
*
@@ -104,24 +105,26 @@ public class TokenGroup {
}
/**
- * @return the end position in the original text
+ * @return the earliest start offset in the original text of a matching token in this group (score > 0), or
+ * if there are none then the earliest offset of any token in the group.
*/
- public int getEndOffset() {
- return endOffset;
+ public int getStartOffset() {
+ return matchStartOffset;
}
/**
- * @return the number of tokens in this group
+ * @return the latest end offset in the original text of a matching token in this group (score > 0), or
+ * if there are none then {@link #getEndOffset()}.
*/
- public int getNumTokens() {
- return numTokens;
+ public int getEndOffset() {
+ return matchEndOffset;
}
/**
- * @return the start position in the original text
+ * @return the number of tokens in this group
*/
- public int getStartOffset() {
- return startOffset;
+ public int getNumTokens() {
+ return numTokens;
}
/**
@@ -130,4 +133,5 @@ public class TokenGroup {
public float getTotalScore() {
return tot;
}
+
}
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/java/org/apache/lucene/search/highlight/WeightedSpanTermExtractor.java Sun Feb 8 23:53:14 2015
@@ -83,9 +83,9 @@ public class WeightedSpanTermExtractor {
private boolean cachedTokenStream;
private boolean wrapToCaching = true;
private int maxDocCharsToAnalyze;
+ private boolean usePayloads = false;
private LeafReader internalReader = null;
-
public WeightedSpanTermExtractor() {
}
@@ -384,7 +384,7 @@ public class WeightedSpanTermExtractor {
// Use MemoryIndex (index/invert this tokenStream now)
if (internalReader == null) {
- final MemoryIndex indexer = new MemoryIndex(true);
+ final MemoryIndex indexer = new MemoryIndex(true, usePayloads);//offsets and payloads
if (cacheIt) {
assert !cachedTokenStream;
tokenStream = new CachingTokenFilter(new OffsetLimitTokenFilter(tokenStream, maxDocCharsToAnalyze));
@@ -652,7 +652,15 @@ public class WeightedSpanTermExtractor {
public void setExpandMultiTermQuery(boolean expandMultiTermQuery) {
this.expandMultiTermQuery = expandMultiTermQuery;
}
-
+
+ public boolean isUsePayloads() {
+ return usePayloads;
+ }
+
+ public void setUsePayloads(boolean usePayloads) {
+ this.usePayloads = usePayloads;
+ }
+
public boolean isCachedTokenStream() {
return cachedTokenStream;
}
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterPhraseTest.java Sun Feb 8 23:53:14 2015
@@ -116,11 +116,6 @@ public class HighlighterPhraseTest exten
private int baseDoc;
@Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
-
- @Override
public void collect(int i) {
bitset.set(this.baseDoc + i);
}
Modified: lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java (original)
+++ lucene/dev/branches/lucene6005/lucene/highlighter/src/test/org/apache/lucene/search/highlight/HighlighterTest.java Sun Feb 8 23:53:14 2015
@@ -17,6 +17,8 @@ package org.apache.lucene.search.highlig
* limitations under the License.
*/
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@@ -28,10 +30,17 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.lucene.analysis.*;
+import org.apache.lucene.analysis.Analyzer;
+import org.apache.lucene.analysis.BaseTokenStreamTestCase;
+import org.apache.lucene.analysis.CachingTokenFilter;
+import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.analysis.MockPayloadAnalyzer;
+import org.apache.lucene.analysis.MockTokenFilter;
+import org.apache.lucene.analysis.MockTokenizer;
+import org.apache.lucene.analysis.Token;
+import org.apache.lucene.analysis.TokenStream;
+import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
@@ -40,19 +49,41 @@ import org.apache.lucene.document.FieldT
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.index.Term;
import org.apache.lucene.queries.CommonTermsQuery;
-import org.apache.lucene.search.*;
import org.apache.lucene.search.BooleanClause.Occur;
+import org.apache.lucene.search.BooleanQuery;
+import org.apache.lucene.search.ConstantScoreQuery;
+import org.apache.lucene.search.FilteredQuery;
+import org.apache.lucene.search.FuzzyQuery;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.MultiPhraseQuery;
+import org.apache.lucene.search.MultiTermQuery;
+import org.apache.lucene.search.PhraseQuery;
+import org.apache.lucene.search.PrefixQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.QueryWrapperFilter;
+import org.apache.lucene.search.RegexpQuery;
+import org.apache.lucene.search.TermQuery;
+import org.apache.lucene.search.TermRangeFilter;
+import org.apache.lucene.search.TermRangeQuery;
+import org.apache.lucene.search.TopDocs;
+import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.search.highlight.SynonymTokenizer.TestHighlightRunner;
import org.apache.lucene.search.join.BitDocIdSetCachingWrapperFilter;
import org.apache.lucene.search.join.BitDocIdSetFilter;
import org.apache.lucene.search.join.ScoreMode;
import org.apache.lucene.search.join.ToChildBlockJoinQuery;
import org.apache.lucene.search.join.ToParentBlockJoinQuery;
-import org.apache.lucene.search.spans.*;
+import org.apache.lucene.search.spans.SpanMultiTermQueryWrapper;
+import org.apache.lucene.search.spans.SpanNearQuery;
+import org.apache.lucene.search.spans.SpanNotQuery;
+import org.apache.lucene.search.spans.SpanOrQuery;
+import org.apache.lucene.search.spans.SpanPayloadCheckQuery;
+import org.apache.lucene.search.spans.SpanQuery;
+import org.apache.lucene.search.spans.SpanTermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
@@ -1881,13 +1912,14 @@ public class HighlighterTest extends Bas
reader.close();
}
- /** If we have term vectors, we can highlight based on payloads */
+ /** We can highlight based on payloads. It's supported both via term vectors and MemoryIndex since Lucene 5. */
public void testPayloadQuery() throws IOException, InvalidTokenOffsetsException {
final String text = "random words and words";//"words" at positions 1 & 4
Analyzer analyzer = new MockPayloadAnalyzer();//sets payload to "pos: X" (where X is position #)
Directory dir = newDirectory();
try (IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(analyzer))) {
+ writer.deleteAll();
Document doc = writer.newDocument();
FieldTypes fieldTypes = writer.getFieldTypes();
fieldTypes.enableTermVectors(FIELD_NAME);
@@ -1902,12 +1934,16 @@ public class HighlighterTest extends Bas
Query query = new SpanPayloadCheckQuery(new SpanTermQuery(new Term(FIELD_NAME, "words")),
Collections.singleton("pos: 1".getBytes("UTF-8")));//just match the first "word" occurrence
IndexSearcher searcher = newSearcher(reader);
- Scorer scorer = new QueryScorer(query, searcher.getIndexReader(), FIELD_NAME);
+ QueryScorer scorer = new QueryScorer(query, searcher.getIndexReader(), FIELD_NAME);
+ scorer.setUsePayloads(true);
Highlighter h = new Highlighter(scorer);
TopDocs hits = searcher.search(query, null, 10);
assertEquals(1, hits.scoreDocs.length);
TokenStream stream = TokenSources.getAnyTokenStream(searcher.getIndexReader(), 0, FIELD_NAME, analyzer);
+ if (random().nextBoolean()) {
+ stream = new CachingTokenFilter(stream);//conceals detection of TokenStreamFromTermVector
+ }
String result = h.getBestFragment(stream, text);
assertEquals("random <B>words</B> and words", result);//only highlight first "word"
}
Modified: lucene/dev/branches/lucene6005/lucene/ivy-settings.xml
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/ivy-settings.xml?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/ivy-settings.xml (original)
+++ lucene/dev/branches/lucene6005/lucene/ivy-settings.xml Sun Feb 8 23:53:14 2015
@@ -33,7 +33,6 @@
<resolvers>
<ibiblio name="sonatype-releases" root="https://oss.sonatype.org/content/repositories/releases" m2compatible="true" />
<ibiblio name="maven.restlet.org" root="http://maven.restlet.org" m2compatible="true" />
- <ibiblio name="cloudera" root="http://repository.cloudera.com/artifactory/repo" m2compatible="true" />
<ibiblio name="releases.cloudera.com" root="http://repository.cloudera.com/content/repositories/releases" m2compatible="true" />
<!-- needed only for newer svnkit releases, e.g. 1.8.x -->
@@ -55,10 +54,9 @@
<resolver ref="local"/>
<!-- <resolver ref="local-maven-2" /> -->
<resolver ref="main"/>
- <resolver ref="cloudera"/>
- <resolver ref="releases.cloudera.com"/>
- <resolver ref="sonatype-releases" />
<resolver ref="maven.restlet.org" />
+ <resolver ref="sonatype-releases" />
+ <resolver ref="releases.cloudera.com"/>
<!-- <resolver ref="svnkit-releases" /> -->
<resolver ref="working-chinese-mirror" />
</chain>
Modified: lucene/dev/branches/lucene6005/lucene/ivy-versions.properties
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/ivy-versions.properties?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/ivy-versions.properties (original)
+++ lucene/dev/branches/lucene6005/lucene/ivy-versions.properties Sun Feb 8 23:53:14 2015
@@ -70,7 +70,7 @@ com.sun.jersey.version = 1.9
/jakarta-regexp/jakarta-regexp = 1.4
/javax.activation/activation = 1.1.1
/javax.inject/javax.inject= 1
-/javax.servlet/javax.servlet-api = 3.0.1
+/javax.servlet/javax.servlet-api = 3.1.0
/javax.servlet/servlet-api = 2.4
/jdom/jdom = 1.0
/joda-time/joda-time = 2.2
@@ -88,8 +88,9 @@ com.sun.jersey.version = 1.9
/org.apache.avro/avro = 1.7.5
/org.apache.commons/commons-compress = 1.8.1
/org.apache.derby/derby = 10.9.1.0
+/org.apache.directory.server/apacheds-all = 2.0.0-M15
-org.apache.hadoop.version = 2.2.0
+org.apache.hadoop.version = 2.3.0
/org.apache.hadoop/hadoop-annotations = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-auth = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-common = ${org.apache.hadoop.version}
@@ -101,6 +102,7 @@ org.apache.hadoop.version = 2.2.0
/org.apache.hadoop/hadoop-mapreduce-client-hs = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-mapreduce-client-jobclient = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-mapreduce-client-shuffle = ${org.apache.hadoop.version}
+/org.apache.hadoop/hadoop-minikdc = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-yarn-api = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-yarn-client = ${org.apache.hadoop.version}
/org.apache.hadoop/hadoop-yarn-common = ${org.apache.hadoop.version}
@@ -126,19 +128,20 @@ org.apache.james.apache.mime4j.version =
/org.apache.mahout/mahout-math = 0.6
/org.apache.mrunit/mrunit = 1.0.0
-org.apache.pdfbox.version = 1.8.6
+org.apache.pdfbox.version = 1.8.8
/org.apache.pdfbox/fontbox = ${org.apache.pdfbox.version}
/org.apache.pdfbox/jempbox = ${org.apache.pdfbox.version}
/org.apache.pdfbox/pdfbox = ${org.apache.pdfbox.version}
-org.apache.poi.version = 3.11-beta2
+org.apache.poi.version = 3.11
/org.apache.poi/poi = ${org.apache.poi.version}
/org.apache.poi/poi-ooxml = ${org.apache.poi.version}
/org.apache.poi/poi-ooxml-schemas = ${org.apache.poi.version}
/org.apache.poi/poi-scratchpad = ${org.apache.poi.version}
-org.apache.tika.version = 1.6
+org.apache.tika.version = 1.7
/org.apache.tika/tika-core = ${org.apache.tika.version}
+/org.apache.tika/tika-java7 = ${org.apache.tika.version}
/org.apache.tika/tika-parsers = ${org.apache.tika.version}
/org.apache.tika/tika-xmp = ${org.apache.tika.version}
@@ -174,11 +177,11 @@ org.codehaus.jackson.version = 1.9.13
/org.codehaus.jackson/jackson-jaxrs = ${org.codehaus.jackson.version}
/org.codehaus.jackson/jackson-mapper-asl = ${org.codehaus.jackson.version}
-/org.codehaus.woodstox/wstx-asl = 3.2.7
+/org.codehaus.woodstox/stax2-api = 3.1.4
+/org.codehaus.woodstox/woodstox-core-asl = 4.4.1
/org.easymock/easymock = 3.0
-/org.eclipse.jetty.orbit/javax.servlet = 3.0.0.v201112011016
-org.eclipse.jetty.version = 8.1.10.v20130312
+org.eclipse.jetty.version = 9.2.6.v20141205
/org.eclipse.jetty/jetty-continuation = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-deploy = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-http = ${org.eclipse.jetty.version}
@@ -187,6 +190,7 @@ org.eclipse.jetty.version = 8.1.10.v2013
/org.eclipse.jetty/jetty-security = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-server = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-servlet = ${org.eclipse.jetty.version}
+/org.eclipse.jetty/jetty-servlets = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-start = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-util = ${org.eclipse.jetty.version}
/org.eclipse.jetty/jetty-webapp = ${org.eclipse.jetty.version}
@@ -219,13 +223,13 @@ org.ow2.asm.version = 4.1
/org.ow2.asm/asm = ${org.ow2.asm.version}
/org.ow2.asm/asm-commons = ${org.ow2.asm.version}
-org.restlet.jee.version = 2.1.1
+org.restlet.jee.version = 2.3.0
/org.restlet.jee/org.restlet = ${org.restlet.jee.version}
/org.restlet.jee/org.restlet.ext.servlet = ${org.restlet.jee.version}
/org.simpleframework/simple-xml = 2.7
-org.slf4j.version = 1.7.6
+org.slf4j.version = 1.7.7
/org.slf4j/jcl-over-slf4j = ${org.slf4j.version}
/org.slf4j/jul-to-slf4j = ${org.slf4j.version}
/org.slf4j/slf4j-api = ${org.slf4j.version}
Modified: lucene/dev/branches/lucene6005/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6005/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java?rev=1658277&r1=1658276&r2=1658277&view=diff
==============================================================================
--- lucene/dev/branches/lucene6005/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java (original)
+++ lucene/dev/branches/lucene6005/lucene/join/src/java/org/apache/lucene/search/join/TermsCollector.java Sun Feb 8 23:53:14 2015
@@ -45,11 +45,6 @@ abstract class TermsCollector extends Si
return collectorTerms;
}
- @Override
- public boolean acceptsDocsOutOfOrder() {
- return true;
- }
-
/**
* Chooses the right {@link TermsCollector} implementation.
*