List of usage examples for org.apache.lucene.search LeafCollector LeafCollector
LeafCollector
From source file:org.elasticsearch.search.slice.DocValuesSliceQueryTests.java
License:Apache License
public void testSearch() throws Exception { final int numDocs = randomIntBetween(100, 200); final Directory dir = newDirectory(); final RandomIndexWriter w = new RandomIndexWriter(random(), dir); int max = randomIntBetween(2, 10); int[] sliceCounters1 = new int[max]; int[] sliceCounters2 = new int[max]; Set<String> keys = new HashSet<>(); for (int i = 0; i < numDocs; ++i) { Document doc = new Document(); String uuid = UUIDs.base64UUID(); int intValue = randomInt(); long doubleValue = NumericUtils.doubleToSortableLong(randomDouble()); doc.add(new StringField("uuid", uuid, Field.Store.YES)); doc.add(new SortedNumericDocValuesField("intField", intValue)); doc.add(new SortedNumericDocValuesField("doubleField", doubleValue)); w.addDocument(doc);/*from w w w.j av a 2 s. c om*/ sliceCounters1[Math.floorMod(BitMixer.mix((long) intValue), max)]++; sliceCounters2[Math.floorMod(BitMixer.mix(doubleValue), max)]++; keys.add(uuid); } final IndexReader reader = w.getReader(); final IndexSearcher searcher = newSearcher(reader); for (int id = 0; id < max; id++) { DocValuesSliceQuery query1 = new DocValuesSliceQuery("intField", id, max); assertThat(searcher.count(query1), equalTo(sliceCounters1[id])); DocValuesSliceQuery query2 = new DocValuesSliceQuery("doubleField", id, max); assertThat(searcher.count(query2), equalTo(sliceCounters2[id])); searcher.search(query1, new Collector() { @Override public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { return new LeafCollector() { @Override public void setScorer(Scorer scorer) throws IOException { } @Override public void collect(int doc) throws IOException { Document d = context.reader().document(doc, Collections.singleton("uuid")); String uuid = d.get("uuid"); assertThat(keys.contains(uuid), equalTo(true)); keys.remove(uuid); } }; } @Override public boolean needsScores() { return false; } }); } assertThat(keys.size(), equalTo(0)); w.close(); reader.close(); dir.close(); }
From source file:org.elasticsearch.search.slice.TermsSliceQueryTests.java
License:Apache License
public void testSearch() throws Exception { final int numDocs = randomIntBetween(100, 200); final Directory dir = newDirectory(); final RandomIndexWriter w = new RandomIndexWriter(random(), dir, new KeywordAnalyzer()); int max = randomIntBetween(2, 10); int[] sliceCounters = new int[max]; Set<String> keys = new HashSet<>(); for (int i = 0; i < numDocs; ++i) { Document doc = new Document(); String uuid = UUIDs.base64UUID(); BytesRef br = new BytesRef(uuid); int id = Math.floorMod(br.hashCode(), max); sliceCounters[id]++;//from w ww .jav a2 s. c o m doc.add(new StringField("uuid", uuid, Field.Store.YES)); w.addDocument(doc); keys.add(uuid); } final IndexReader reader = w.getReader(); final IndexSearcher searcher = newSearcher(reader); for (int id = 0; id < max; id++) { TermsSliceQuery query1 = new TermsSliceQuery("uuid", id, max); assertThat(searcher.count(query1), equalTo(sliceCounters[id])); searcher.search(query1, new Collector() { @Override public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { return new LeafCollector() { @Override public void setScorer(Scorer scorer) throws IOException { } @Override public void collect(int doc) throws IOException { Document d = context.reader().document(doc, Collections.singleton("uuid")); String uuid = d.get("uuid"); assertThat(keys.contains(uuid), equalTo(true)); keys.remove(uuid); } }; } @Override public boolean needsScores() { return false; } }); } assertThat(keys.size(), equalTo(0)); w.close(); reader.close(); dir.close(); }
From source file:org.lexevs.dao.index.lucene.v2010.entity.SingleTemplateDisposableLuceneCommonEntityDao.java
License:Open Source License
@Override public List<ScoreDoc> query(Query query) { int maxDoc = template.getMaxDoc(); if (maxDoc == 0) { StringBuffer errorMsg = new StringBuffer("Index does not exist"); if (!references.isEmpty()) { errorMsg.append(": coding scheme: " + references.get(0).getCodingSchemeURN() + " version: " + references.get(0).getCodingSchemeVersion()); }/*from w w w . j av a2 s. co m*/ logger.error(errorMsg.toString()); throw new RuntimeException(errorMsg.toString()); } final List<ScoreDoc> scoreDocs = new ArrayList<ScoreDoc>(); template.search(query, null, new Collector() { @Override public LeafCollector getLeafCollector(final LeafReaderContext context) throws IOException { return new LeafCollector() { private Scorer scorer; @Override public void collect(int docId) throws IOException { scoreDocs.add(new ScoreDoc(context.docBase + docId, this.scorer.score())); } @Override public void setScorer(Scorer scorer) throws IOException { this.scorer = scorer; } }; } @Override public boolean needsScores() { return true; } }); Collections.sort(scoreDocs, new Comparator<ScoreDoc>() { @Override public int compare(ScoreDoc o1, ScoreDoc o2) { if (o1.score > o2.score) return -1; if (o1.score < o2.score) return 1; return 0; } }); return scoreDocs; }
From source file:org.lexevs.dao.index.lucene.v2013.search.LuceneSearchDao.java
License:Open Source License
@Override public List<ScoreDoc> query(Query query) { try {/* ww w .j a v a2 s. c o m*/ LuceneIndexTemplate template = this.getLuceneIndexTemplate(); int maxDoc = template.getMaxDoc(); if (maxDoc == 0) { String errorMsg = "Index does not exist: " + template.getIndexName(); logger.error(errorMsg); throw new RuntimeException(errorMsg); } final List<ScoreDoc> scoreDocs = new ArrayList<ScoreDoc>(); template.search(query, null, new Collector() { @Override public LeafCollector getLeafCollector(final LeafReaderContext context) throws IOException { return new LeafCollector() { private Scorer scorer; @Override public void collect(int docId) throws IOException { scoreDocs.add(new ScoreDoc(context.docBase + docId, this.scorer.score())); } @Override public void setScorer(Scorer scorer) throws IOException { this.scorer = scorer; } }; } @Override public boolean needsScores() { return true; } }); Collections.sort(scoreDocs, new Comparator<ScoreDoc>() { @Override public int compare(ScoreDoc o1, ScoreDoc o2) { if (o1.score > o2.score) return -1; if (o1.score < o2.score) return 1; return 0; } }); return scoreDocs; } catch (Exception e) { throw new RuntimeException(e); } }
From source file:org.opengrok.suggest.SuggesterSearcher.java
License:Open Source License
private ComplexQueryData getComplexQueryData(final Query query, final LeafReaderContext leafReaderContext) { ComplexQueryData data = new ComplexQueryData(); if (query == null || query instanceof SuggesterQuery) { data.documentIds = new BitIntsHolder(0); return data; }/*from w ww. jav a 2 s .co m*/ BitIntsHolder documentIds = new BitIntsHolder(); try { search(query, new Collector() { @Override public LeafCollector getLeafCollector(final LeafReaderContext context) { return new LeafCollector() { final int docBase = context.docBase; @Override public void setScorer(final Scorer scorer) { if (leafReaderContext == context) { if (scorer instanceof PhraseScorer) { data.scorer = (PhraseScorer) scorer; } else { try { // it is mentioned in the documentation that #getChildren should not be called // in #setScorer but no better way was found for (Scorer.ChildScorer childScorer : scorer.getChildren()) { if (childScorer.child instanceof PhraseScorer) { data.scorer = (PhraseScorer) childScorer.child; } } } catch (Exception e) { // ignore } } } } @Override public void collect(int doc) { if (leafReaderContext == context) { documentIds.set(docBase + doc); } } }; } @Override public boolean needsScores() { return false; } }); } catch (IOException e) { if (Thread.currentThread().isInterrupted()) { interrupted = true; return null; } else { logger.log(Level.WARNING, "Could not get document ids for " + query, e); } } catch (Exception e) { logger.log(Level.WARNING, "Could not get document ids for " + query, e); } data.documentIds = documentIds; return data; }
From source file:sh.isaac.provider.query.lucene.indexers.NoScoreCollector.java
License:Apache License
@Override public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { final int docBase = context.docBase; return new LeafCollector() { // ignore scorer public void setScorer(Scorer scorer) throws IOException { }//from w w w . j a v a 2 s. c o m public void collect(int doc) throws IOException { docIds.add(docBase + doc); } }; }