Java Code Examples for org.apache.lucene.search.DoubleValuesSource#getValues()
The following examples show how to use
org.apache.lucene.search.DoubleValuesSource#getValues() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestExpressionValueSource.java From lucene-solr with Apache License 2.0 | 6 votes |
public void testDoubleValuesSourceTypes() throws Exception { Expression expr = JavascriptCompiler.compile("2*popularity + count"); SimpleBindings bindings = new SimpleBindings(); bindings.add("popularity", DoubleValuesSource.fromLongField("popularity")); bindings.add("count", DoubleValuesSource.fromLongField("count")); DoubleValuesSource vs = expr.getDoubleValuesSource(bindings); assertEquals(1, reader.leaves().size()); LeafReaderContext leaf = reader.leaves().get(0); DoubleValues values = vs.getValues(leaf, null); assertTrue(values.advanceExact(0)); assertEquals(10, values.doubleValue(), 0); assertTrue(values.advanceExact(1)); assertEquals(41, values.doubleValue(), 0); assertTrue(values.advanceExact(2)); assertEquals(4, values.doubleValue(), 0); }
Example 2
Source File: TaxonomyFacetSumValueSource.java From lucene-solr with Apache License 2.0 | 6 votes |
private void sumValues(List<MatchingDocs> matchingDocs, boolean keepScores, DoubleValuesSource valueSource) throws IOException { IntsRef scratch = new IntsRef(); for(MatchingDocs hits : matchingDocs) { OrdinalsReader.OrdinalsSegmentReader ords = ordinalsReader.getReader(hits.context); DoubleValues scores = keepScores ? scores(hits) : null; DoubleValues functionValues = valueSource.getValues(hits.context, scores); DocIdSetIterator docs = hits.bits.iterator(); int doc; while ((doc = docs.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { ords.get(doc, scratch); if (functionValues.advanceExact(doc)) { float value = (float) functionValues.doubleValue(); for (int i = 0; i < scratch.length; i++) { values[scratch.ints[i]] += value; } } } } rollup(); }
Example 3
Source File: TestFeatureDoubleValues.java From lucene-solr with Apache License 2.0 | 6 votes |
public void testFeatureMissingFieldInSegment() throws IOException { Directory dir = newDirectory(); IndexWriterConfig config = newIndexWriterConfig().setMergePolicy(newLogMergePolicy(random().nextBoolean())); RandomIndexWriter writer = new RandomIndexWriter(random(), dir, config); Document doc = new Document(); writer.addDocument(doc); writer.commit(); IndexReader ir = writer.getReader(); writer.close(); assertEquals(1, ir.leaves().size()); LeafReaderContext context = ir.leaves().get(0); DoubleValuesSource valuesSource = FeatureField.newDoubleValues("field", "name"); DoubleValues values = valuesSource.getValues(context, null); assertFalse(values.advanceExact(0)); assertFalse(values.advanceExact(1)); ir.close(); dir.close(); }
Example 4
Source File: TestFeatureDoubleValues.java From lucene-solr with Apache License 2.0 | 6 votes |
public void testFeatureMissingFeatureNameInSegment() throws IOException { Directory dir = newDirectory(); IndexWriterConfig config = newIndexWriterConfig().setMergePolicy(newLogMergePolicy(random().nextBoolean())); RandomIndexWriter writer = new RandomIndexWriter(random(), dir, config); Document doc = new Document(); doc.add(new FeatureField("field", "different_name", 0.5F)); writer.addDocument(doc); writer.commit(); IndexReader ir = writer.getReader(); writer.close(); assertEquals(1, ir.leaves().size()); LeafReaderContext context = ir.leaves().get(0); DoubleValuesSource valuesSource = FeatureField.newDoubleValues("field", "name"); DoubleValues values = valuesSource.getValues(context, null); assertFalse(values.advanceExact(0)); assertFalse(values.advanceExact(1)); ir.close(); dir.close(); }
Example 5
Source File: DerivedExpressionQuery.java From elasticsearch-learning-to-rank with Apache License 2.0 | 6 votes |
@Override public Scorer scorer(LeafReaderContext context) throws IOException { Bindings bindings = new Bindings(){ @Override public DoubleValuesSource getDoubleValuesSource(String name) { Double queryParamValue = queryParamValues.get(name); if (queryParamValue != null) { return DoubleValuesSource.constant(queryParamValue); } return new FVDoubleValuesSource(vectorSupplier, features.featureOrdinal(name)); } }; DocIdSetIterator iterator = DocIdSetIterator.all(context.reader().maxDoc()); DoubleValuesSource src = expression.getDoubleValuesSource(bindings); DoubleValues values = src.getValues(context, null); return new DValScorer(this, iterator, values); }
Example 6
Source File: StrategyTestCase.java From lucene-solr with Apache License 2.0 | 5 votes |
/** scores[] are in docId order */ protected void checkValueSource(DoubleValuesSource vs, float scores[], float delta) throws IOException { for (LeafReaderContext ctx : indexSearcher.getTopReaderContext().leaves()) { DoubleValues v = vs.getValues(ctx, null); int count = ctx.reader().maxDoc(); for (int i = 0; i < count; i++) { assertTrue(v.advanceExact(i)); int doc = i + ctx.docBase; assertEquals("Not equal for doc " + doc, v.doubleValue(), (double) scores[doc], delta); } } }
Example 7
Source File: FunctionMatchQuery.java From lucene-solr with Apache License 2.0 | 5 votes |
@Override public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, float boost) throws IOException { DoubleValuesSource vs = source.rewrite(searcher); return new ConstantScoreWeight(this, boost) { @Override public Scorer scorer(LeafReaderContext context) throws IOException { DoubleValues values = vs.getValues(context, null); DocIdSetIterator approximation = DocIdSetIterator.all(context.reader().maxDoc()); TwoPhaseIterator twoPhase = new TwoPhaseIterator(approximation) { @Override public boolean matches() throws IOException { return values.advanceExact(approximation.docID()) && filter.test(values.doubleValue()); } @Override public float matchCost() { return 100; // TODO maybe DoubleValuesSource should have a matchCost? } }; return new ConstantScoreScorer(this, score(), scoreMode, twoPhase); } @Override public boolean isCacheable(LeafReaderContext ctx) { return source.isCacheable(ctx); } }; }
Example 8
Source File: TestFeatureDoubleValues.java From lucene-solr with Apache License 2.0 | 5 votes |
public void testFeature() throws IOException { Directory dir = newDirectory(); IndexWriterConfig config = newIndexWriterConfig().setMergePolicy(newLogMergePolicy(random().nextBoolean())); RandomIndexWriter writer = new RandomIndexWriter(random(), dir, config); Document doc = new Document(); doc.add(new FeatureField("field", "name", 30F)); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 1F)); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 4F)); writer.addDocument(doc); writer.forceMerge(1); IndexReader ir = writer.getReader(); writer.close(); assertEquals(1, ir.leaves().size()); LeafReaderContext context = ir.leaves().get(0); DoubleValuesSource valuesSource = FeatureField.newDoubleValues("field", "name"); DoubleValues values = valuesSource.getValues(context, null); assertTrue(values.advanceExact(0)); assertEquals(30, values.doubleValue(), 0f); assertTrue(values.advanceExact(1)); assertEquals(1, values.doubleValue(), 0f); assertTrue(values.advanceExact(2)); assertEquals(4, values.doubleValue(), 0f); assertFalse(values.advanceExact(3)); ir.close(); dir.close(); }
Example 9
Source File: TestFeatureDoubleValues.java From lucene-solr with Apache License 2.0 | 5 votes |
public void testFeatureMissing() throws IOException { Directory dir = newDirectory(); IndexWriterConfig config = newIndexWriterConfig().setMergePolicy(newLogMergePolicy(random().nextBoolean())); RandomIndexWriter writer = new RandomIndexWriter(random(), dir, config); Document doc = new Document(); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 1F)); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 4F)); writer.addDocument(doc); writer.forceMerge(1); IndexReader ir = writer.getReader(); writer.close(); assertEquals(1, ir.leaves().size()); LeafReaderContext context = ir.leaves().get(0); DoubleValuesSource valuesSource = FeatureField.newDoubleValues("field", "name"); DoubleValues values = valuesSource.getValues(context, null); assertFalse(values.advanceExact(0)); assertTrue(values.advanceExact(1)); assertEquals(1, values.doubleValue(), 0f); assertTrue(values.advanceExact(2)); assertEquals(4, values.doubleValue(), 0f); assertFalse(values.advanceExact(3)); ir.close(); dir.close(); }
Example 10
Source File: DerivedExpressionQuery.java From elasticsearch-learning-to-rank with Apache License 2.0 | 5 votes |
@Override public Explanation explain(LeafReaderContext context, int doc) throws IOException { Bindings bindings = new Bindings(){ @Override public DoubleValuesSource getDoubleValuesSource(String name) { return new FVDoubleValuesSource(vectorSupplier, features.featureOrdinal(name)); } }; DoubleValuesSource src = expression.getDoubleValuesSource(bindings); DoubleValues values = src.getValues(context, null); values.advanceExact(doc); return Explanation.match((float) values.doubleValue(), "Evaluation of derived expression: " + expression.sourceText); }
Example 11
Source File: DoubleRangeFacetCounts.java From lucene-solr with Apache License 2.0 | 4 votes |
private void count(DoubleValuesSource valueSource, List<MatchingDocs> matchingDocs) throws IOException { DoubleRange[] ranges = (DoubleRange[]) this.ranges; LongRange[] longRanges = new LongRange[ranges.length]; for(int i=0;i<ranges.length;i++) { DoubleRange range = ranges[i]; longRanges[i] = new LongRange(range.label, NumericUtils.doubleToSortableLong(range.min), true, NumericUtils.doubleToSortableLong(range.max), true); } LongRangeCounter counter = new LongRangeCounter(longRanges); int missingCount = 0; for (MatchingDocs hits : matchingDocs) { DoubleValues fv = valueSource.getValues(hits.context, null); totCount += hits.totalHits; final DocIdSetIterator fastMatchDocs; if (fastMatchQuery != null) { final IndexReaderContext topLevelContext = ReaderUtil.getTopLevelContext(hits.context); final IndexSearcher searcher = new IndexSearcher(topLevelContext); searcher.setQueryCache(null); final Weight fastMatchWeight = searcher.createWeight(searcher.rewrite(fastMatchQuery), ScoreMode.COMPLETE_NO_SCORES, 1); Scorer s = fastMatchWeight.scorer(hits.context); if (s == null) { continue; } fastMatchDocs = s.iterator(); } else { fastMatchDocs = null; } DocIdSetIterator docs = hits.bits.iterator(); for (int doc = docs.nextDoc(); doc != DocIdSetIterator.NO_MORE_DOCS; ) { if (fastMatchDocs != null) { int fastMatchDoc = fastMatchDocs.docID(); if (fastMatchDoc < doc) { fastMatchDoc = fastMatchDocs.advance(doc); } if (doc != fastMatchDoc) { doc = docs.advance(fastMatchDoc); continue; } } // Skip missing docs: if (fv.advanceExact(doc)) { counter.add(NumericUtils.doubleToSortableLong(fv.doubleValue())); } else { missingCount++; } doc = docs.nextDoc(); } } missingCount += counter.fillCounts(counts); totCount -= missingCount; }
Example 12
Source File: TestFeatureDoubleValues.java From lucene-solr with Apache License 2.0 | 4 votes |
public void testFeatureMultipleMissing() throws IOException { Directory dir = newDirectory(); IndexWriterConfig config = newIndexWriterConfig().setMergePolicy(newLogMergePolicy(random().nextBoolean())); RandomIndexWriter writer = new RandomIndexWriter(random(), dir, config); Document doc = new Document(); writer.addDocument(doc); doc = new Document(); writer.addDocument(doc); doc = new Document(); writer.addDocument(doc); doc = new Document(); writer.addDocument(doc); doc = new Document(); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 1F)); writer.addDocument(doc); doc = new Document(); doc.add(new FeatureField("field", "name", 4F)); writer.addDocument(doc); writer.forceMerge(1); IndexReader ir = writer.getReader(); writer.close(); assertEquals(1, ir.leaves().size()); LeafReaderContext context = ir.leaves().get(0); DoubleValuesSource valuesSource = FeatureField.newDoubleValues("field", "name"); DoubleValues values = valuesSource.getValues(context, null); assertFalse(values.advanceExact(0)); assertFalse(values.advanceExact(1)); assertFalse(values.advanceExact(2)); assertFalse(values.advanceExact(3)); assertFalse(values.advanceExact(4)); assertTrue(values.advanceExact(5)); assertEquals(1, values.doubleValue(), 0f); assertTrue(values.advanceExact(6)); assertEquals(4, values.doubleValue(), 0f); assertFalse(values.advanceExact(7)); ir.close(); dir.close(); }