List of usage examples for org.apache.lucene.search Scorer Scorer
protected Scorer(Weight weight)
From source file:com.browseengine.bobo.query.RecencyBoostScorerBuilder.java
License:Apache License
public Scorer createScorer(final Scorer innerScorer, IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException { if (reader instanceof BoboIndexReader) { BoboIndexReader boboReader = (BoboIndexReader) reader; Object dataObj = boboReader.getFacetData(_timeFacetName); if (dataObj instanceof FacetDataCache<?>) { FacetDataCache<Long> facetDataCache = (FacetDataCache<Long>) (boboReader .getFacetData(_timeFacetName)); final BigSegmentedArray orderArray = facetDataCache.orderArray; final TermLongList termList = (TermLongList) facetDataCache.valArray; return new Scorer(innerScorer.getSimilarity()) { @Override//from w w w .ja v a 2s . c o m public float score() throws IOException { float rawScore = innerScorer.score(); long timeVal = termList.getRawValue(orderArray.get(innerScorer.docID())); float timeScore = computeTimeFactor(timeVal); return combineScores(timeScore, rawScore); } @Override public int advance(int target) throws IOException { return innerScorer.advance(target); } @Override public int docID() { return innerScorer.docID(); } @Override public int nextDoc() throws IOException { return innerScorer.nextDoc(); } }; } else { throw new IllegalStateException("underlying facet data must be of type FacetDataCache<Long>"); } } else { throw new IllegalStateException("reader not instance of " + BoboIndexReader.class); } }
From source file:org.codelibs.elasticsearch.common.lucene.Lucene.java
License:Apache License
/** * Return a Scorer that throws an ElasticsearchIllegalStateException * on all operations with the given message. *///ww w .j a v a 2s . com public static Scorer illegalScorer(final String message) { return new Scorer(null) { @Override public float score() throws IOException { throw new IllegalStateException(message); } @Override public int freq() throws IOException { throw new IllegalStateException(message); } @Override public int docID() { throw new IllegalStateException(message); } @Override public DocIdSetIterator iterator() { throw new IllegalStateException(message); } }; }
From source file:org.elasticsearch.common.lucene.search.function.MinScoreScorerTests.java
License:Apache License
private static Scorer scorer(int maxDoc, final int[] docs, final float[] scores, final boolean twoPhase) { final DocIdSetIterator iterator = twoPhase ? DocIdSetIterator.all(maxDoc) : iterator(docs); return new Scorer(null) { public DocIdSetIterator iterator() { if (twoPhase) { return TwoPhaseIterator.asDocIdSetIterator(twoPhaseIterator()); } else { return iterator; }/*from w w w .j a va 2s . c om*/ } public TwoPhaseIterator twoPhaseIterator() { if (twoPhase) { return new TwoPhaseIterator(iterator) { @Override public boolean matches() throws IOException { return Arrays.binarySearch(docs, iterator.docID()) >= 0; } @Override public float matchCost() { return 10; } }; } else { return null; } } @Override public int docID() { return iterator.docID(); } @Override public float score() throws IOException { final int idx = Arrays.binarySearch(docs, docID()); return scores[idx]; } @Override public int freq() throws IOException { return 1; } }; }
From source file:org.elasticsearch.index.query.PercolatorQuery.java
License:Apache License
@Override public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException { final Weight innerWeight = percolatorQueriesQuery.createWeight(searcher, needsScores); return new Weight(this) { @Override/*from w w w. j a va 2 s. c om*/ public void extractTerms(Set<Term> set) { } @Override public Explanation explain(LeafReaderContext leafReaderContext, int docId) throws IOException { Scorer scorer = scorer(leafReaderContext); if (scorer != null) { int result = scorer.iterator().advance(docId); if (result == docId) { return Explanation.match(scorer.score(), "PercolatorQuery"); } } return Explanation.noMatch("PercolatorQuery"); } @Override public float getValueForNormalization() throws IOException { return innerWeight.getValueForNormalization(); } @Override public void normalize(float v, float v1) { innerWeight.normalize(v, v1); } @Override public Scorer scorer(LeafReaderContext leafReaderContext) throws IOException { final Scorer approximation = innerWeight.scorer(leafReaderContext); if (approximation == null) { return null; } final QueryRegistry.Leaf percolatorQueries = queryRegistry.getQueries(leafReaderContext); return new Scorer(this) { @Override public DocIdSetIterator iterator() { return TwoPhaseIterator.asDocIdSetIterator(twoPhaseIterator()); } @Override public TwoPhaseIterator twoPhaseIterator() { return new TwoPhaseIterator(approximation.iterator()) { @Override public boolean matches() throws IOException { return matchDocId(approximation.docID()); } @Override public float matchCost() { return MATCH_COST; } }; } @Override public float score() throws IOException { return approximation.score(); } @Override public int freq() throws IOException { return approximation.freq(); } @Override public int docID() { return approximation.docID(); } boolean matchDocId(int docId) throws IOException { Query query = percolatorQueries.getQuery(docId); if (query != null) { return Lucene.exists(percolatorIndexSearcher, query); } else { return false; } } }; } }; }
From source file:org.elasticsearch.painless.ScriptedMetricAggContextsTests.java
License:Apache License
public void testMapBasic() { ScriptedMetricAggContexts.MapScript.Factory factory = scriptEngine.compile("test", "state.testField = 2*_score", ScriptedMetricAggContexts.MapScript.CONTEXT, Collections.emptyMap()); Map<String, Object> params = new HashMap<>(); Map<String, Object> state = new HashMap<>(); Scorer scorer = new Scorer(null) { @Override/*from w w w . ja v a2 s . com*/ public int docID() { return 0; } @Override public float score() { return 0.5f; } @Override public DocIdSetIterator iterator() { return null; } }; ScriptedMetricAggContexts.MapScript.LeafFactory leafFactory = factory.newFactory(params, state, null); ScriptedMetricAggContexts.MapScript script = leafFactory.newInstance(null); script.setScorer(scorer); script.execute(); assert (state.containsKey("testField")); assertEquals(1.0, state.get("testField")); }
From source file:org.elasticsearch.percolator.PercolatorQuery.java
License:Apache License
@Override public Weight createWeight(IndexSearcher searcher, boolean needsScores) throws IOException { final Weight innerWeight = percolatorQueriesQuery.createWeight(searcher, needsScores); return new Weight(this) { @Override/*from w ww.j a v a 2 s .co m*/ public void extractTerms(Set<Term> set) { } @Override public Explanation explain(LeafReaderContext leafReaderContext, int docId) throws IOException { Scorer scorer = scorer(leafReaderContext); if (scorer != null) { int result = scorer.iterator().advance(docId); if (result == docId) { return Explanation.match(scorer.score(), "PercolatorQuery"); } } return Explanation.noMatch("PercolatorQuery"); } @Override public float getValueForNormalization() throws IOException { return innerWeight.getValueForNormalization(); } @Override public void normalize(float v, float v1) { innerWeight.normalize(v, v1); } @Override public Scorer scorer(LeafReaderContext leafReaderContext) throws IOException { final Scorer approximation = innerWeight.scorer(leafReaderContext); if (approximation == null) { return null; } final LeafReader leafReader = leafReaderContext.reader(); return new Scorer(this) { @Override public DocIdSetIterator iterator() { return TwoPhaseIterator.asDocIdSetIterator(twoPhaseIterator()); } @Override public TwoPhaseIterator twoPhaseIterator() { return new TwoPhaseIterator(approximation.iterator()) { @Override public boolean matches() throws IOException { return matchDocId(approximation.docID(), leafReader); } @Override public float matchCost() { return MATCH_COST; } }; } @Override public float score() throws IOException { return approximation.score(); } @Override public int freq() throws IOException { return approximation.freq(); } @Override public int docID() { return approximation.docID(); } boolean matchDocId(int docId, LeafReader leafReader) throws IOException { SingleFieldsVisitor singleFieldsVisitor = new SingleFieldsVisitor(UidFieldMapper.NAME); leafReader.document(docId, singleFieldsVisitor); BytesRef percolatorQueryId = new BytesRef(singleFieldsVisitor.uid().id()); return matchQuery(percolatorQueryId); } }; } }; }