List of usage examples for org.apache.lucene.search LeafCollector collect
void collect(int doc) throws IOException;
From source file:org.apache.solr.search.DocSetUtil.java
License:Apache License
public static void collectSortedDocSet(DocSet docs, IndexReader reader, Collector collector) throws IOException { // TODO add SortedDocSet sub-interface and take that. // TODO collectUnsortedDocSet: iterate segment, then all docSet per segment. final List<LeafReaderContext> leaves = reader.leaves(); final Iterator<LeafReaderContext> ctxIt = leaves.iterator(); int segBase = 0; int segMax;// ww w.j av a2s. c o m int adjustedMax = 0; LeafReaderContext ctx = null; LeafCollector leafCollector = null; for (DocIterator docsIt = docs.iterator(); docsIt.hasNext();) { final int doc = docsIt.nextDoc(); if (doc >= adjustedMax) { do { ctx = ctxIt.next(); segBase = ctx.docBase; segMax = ctx.reader().maxDoc(); adjustedMax = segBase + segMax; } while (doc >= adjustedMax); leafCollector = collector.getLeafCollector(ctx); } if (doc < segBase) { throw new IllegalStateException("algorithm expects sorted DocSet but wasn't: " + docs.getClass()); } leafCollector.collect(doc - segBase); // per-seg collectors } }
From source file:org.codelibs.elasticsearch.common.lucene.search.FilteredCollector.java
License:Apache License
@Override public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { final Scorer filterScorer = filter.scorer(context); final LeafCollector in = collector.getLeafCollector(context); final Bits bits = Lucene.asSequentialAccessBits(context.reader().maxDoc(), filterScorer); return new FilterLeafCollector(in) { @Override/* www.ja va 2s .co m*/ public void collect(int doc) throws IOException { if (bits.get(doc)) { in.collect(doc); } } }; }
From source file:org.elasticsearch.search.profile.ProfileTests.java
License:Apache License
public void testCollector() throws IOException { TotalHitCountCollector collector = new TotalHitCountCollector(); ProfileCollector profileCollector = new ProfileCollector(collector); assertEquals(0, profileCollector.getTime()); final LeafCollector leafCollector = profileCollector.getLeafCollector(reader.leaves().get(0)); assertThat(profileCollector.getTime(), greaterThan(0L)); long time = profileCollector.getTime(); leafCollector.setScorer(Lucene.illegalScorer("dummy scorer")); assertThat(profileCollector.getTime(), greaterThan(time)); time = profileCollector.getTime();/*from w w w . j a v a 2s . com*/ leafCollector.collect(0); assertThat(profileCollector.getTime(), greaterThan(time)); }
From source file:org.elasticsearch.search.profile.query.ProfileTests.java
License:Apache License
public void testCollector() throws IOException { TotalHitCountCollector collector = new TotalHitCountCollector(); ProfileCollector profileCollector = new ProfileCollector(collector); assertEquals(0, profileCollector.getTime()); final LeafCollector leafCollector = profileCollector.getLeafCollector(reader.leaves().get(0)); assertThat(profileCollector.getTime(), greaterThan(0L)); long time = profileCollector.getTime(); leafCollector.setScorer(null);//w w w . j a v a2s . c o m assertThat(profileCollector.getTime(), greaterThan(time)); time = profileCollector.getTime(); leafCollector.collect(0); assertThat(profileCollector.getTime(), greaterThan(time)); }
From source file:org.elasticsearch.search.SearchCancellationTests.java
License:Apache License
public void testLowLevelCancellableCollector() throws IOException { TotalHitCountCollector collector = new TotalHitCountCollector(); AtomicBoolean cancelled = new AtomicBoolean(); CancellableCollector cancellableCollector = new CancellableCollector(cancelled::get, true, collector); final LeafCollector leafCollector = cancellableCollector.getLeafCollector(reader.leaves().get(0)); leafCollector.collect(0); cancelled.set(true);/*w ww .j a v a 2s. c om*/ expectThrows(TaskCancelledException.class, () -> leafCollector.collect(1)); }
From source file:org.elasticsearch.search.SearchCancellationTests.java
License:Apache License
public void testCancellableCollector() throws IOException { TotalHitCountCollector collector = new TotalHitCountCollector(); AtomicBoolean cancelled = new AtomicBoolean(); CancellableCollector cancellableCollector = new CancellableCollector(cancelled::get, false, collector); final LeafCollector leafCollector = cancellableCollector.getLeafCollector(reader.leaves().get(0)); leafCollector.collect(0); cancelled.set(true);/* ww w .j a va 2s. c om*/ leafCollector.collect(1); expectThrows(TaskCancelledException.class, () -> cancellableCollector.getLeafCollector(reader.leaves().get(1))); }
From source file:org.elasticsearch.xpack.core.security.authz.accesscontrol.SecurityIndexSearcherWrapper.java
License:Open Source License
static void intersectScorerAndRoleBits(Scorer scorer, SparseFixedBitSet roleBits, LeafCollector collector, Bits acceptDocs) throws IOException { // ConjunctionDISI uses the DocIdSetIterator#cost() to order the iterators, so if roleBits has the lowest cardinality it should // be used first: DocIdSetIterator iterator = ConjunctionDISI.intersectIterators( Arrays.asList(new BitSetIterator(roleBits, roleBits.approximateCardinality()), scorer.iterator())); for (int docId = iterator.nextDoc(); docId < DocIdSetIterator.NO_MORE_DOCS; docId = iterator.nextDoc()) { if (acceptDocs == null || acceptDocs.get(docId)) { collector.collect(docId); }/*from www . j av a2 s.c o m*/ } }
From source file:org.neo4j.kernel.api.impl.index.collector.DocValuesCollector.java
License:Open Source License
private void replayTo(Collector collector) throws IOException { for (MatchingDocs docs : getMatchingDocs()) { LeafCollector leafCollector = collector.getLeafCollector(docs.context); Scorer scorer;/* www .java 2 s . com*/ DocIdSetIterator idIterator = docs.docIdSet.iterator(); if (isKeepScores()) { scorer = new ReplayingScorer(docs.scores); } else { scorer = new ConstantScoreScorer(null, Float.NaN, idIterator); } leafCollector.setScorer(scorer); int doc; while ((doc = idIterator.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { leafCollector.collect(doc); } } }
From source file:org.neo4j.kernel.api.impl.index.DocValuesCollector.java
License:Open Source License
private void replayTo(Collector collector) throws IOException { for (MatchingDocs docs : getMatchingDocs()) { LeafCollector leafCollector = collector.getLeafCollector(docs.context); Scorer scorer;// w w w . j a v a 2s. c o m DocIdSetIterator disi = docs.docIdSet.iterator(); if (isKeepScores()) { scorer = new ReplayingScorer(docs.scores); } else { scorer = new ConstantScoreScorer(null, Float.NaN, disi); } leafCollector.setScorer(scorer); int doc; while ((doc = disi.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { leafCollector.collect(doc); } } }