List of usage examples for org.apache.lucene.search Scorer getChildren
public Collection<ChildScorable> getChildren() throws IOException
From source file:org.apache.solr.search.join.BlockJoinFacetCollector.java
License:Apache License
private ChildrenMatchesScorer getToParentScorer(Scorer scorer, Queue<Scorer> queue) { if (scorer == null || scorer instanceof ChildrenMatchesScorer) { return (ChildrenMatchesScorer) scorer; } else {//w w w . ja va2 s . c om for (Scorer.ChildScorer child : scorer.getChildren()) { queue.add(child.child); } return getToParentScorer(queue.poll(), queue); } }
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; }/* www .ja va2 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:uk.co.flax.luwak.util.SpanExtractor.java
License:Apache License
/** * Get a list of all Spans made available from the passed-in Scorer * @param scorer the scorer to extract spans from * @param errorOnNoSpans if true, throw an error if no Spans can be extracted * from the Scorer or any of its children * @return a List of Spans//w w w . j av a 2 s . c o m */ public static List<Spans> getSpans(Scorer scorer, boolean errorOnNoSpans) { List<Spans> spans = new ArrayList<>(); if (scorer instanceof SpanScorer) { spans.add(((SpanScorer) scorer).getSpans()); return spans; } Collection<Scorer.ChildScorer> children = scorer.getChildren(); if (errorOnNoSpans && children.isEmpty()) throw new RuntimeException("Couldn't extract SpanScorer from " + scorer.getClass().getCanonicalName()); for (Scorer.ChildScorer child : children) { spans.addAll(getSpans(child.child, errorOnNoSpans)); } return spans; }