Example usage for org.apache.lucene.search Scorer Scorer

List of usage examples for org.apache.lucene.search Scorer Scorer

Introduction

In this page you can find the example usage for org.apache.lucene.search Scorer Scorer.

Prototype

protected Scorer(Weight weight) 

Source Link

Document

Constructs a Scorer

Usage

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);
                }
            };
        }
    };
}