You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2019/03/27 16:25:15 UTC
[lucene-solr] branch branch_8x updated: LUCENE-8741: Fix
ClassCastException in ValueSource.fromDoubleValuesSource()
This is an automated email from the ASF dual-hosted git repository.
romseygeek pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/branch_8x by this push:
new b1edfc5 LUCENE-8741: Fix ClassCastException in ValueSource.fromDoubleValuesSource()
b1edfc5 is described below
commit b1edfc5ef26b2ade2e7c6d012e4f1f438a0b4173
Author: Alan Woodward <ro...@apache.org>
AuthorDate: Wed Mar 27 16:08:25 2019 +0000
LUCENE-8741: Fix ClassCastException in ValueSource.fromDoubleValuesSource()
---
lucene/CHANGES.txt | 4 ++++
.../src/java/org/apache/lucene/queries/function/ValueSource.java | 3 +--
.../test/org/apache/lucene/queries/function/TestValueSources.java | 6 ++++++
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 52e76a5..1ce06d7 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -43,6 +43,10 @@ Bug fixes
matching. This behaviour can be disabled if users are more interested
in speed rather than accuracy of matching. (Alan Woodward, Jim Ferenczi)
+* LUCENE-8741: ValueSource.fromDoubleValuesSource() was casting to
+ Scorer instead of Scorable, leading to ClassCastExceptions (Markus Jelsma,
+ Alan Woodward)
+
Improvements
* LUCENE-8673: Use radix partitioning when merging dimensional points instead
diff --git a/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java b/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
index 0cbfe89..1ba3580 100644
--- a/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
+++ b/lucene/queries/src/java/org/apache/lucene/queries/function/ValueSource.java
@@ -32,7 +32,6 @@ import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.LongValues;
import org.apache.lucene.search.LongValuesSource;
import org.apache.lucene.search.Scorable;
-import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.SimpleFieldComparator;
import org.apache.lucene.search.SortField;
@@ -285,7 +284,7 @@ public abstract class ValueSource {
@Override
public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException {
- Scorer scorer = (Scorer) context.get("scorer");
+ Scorable scorer = (Scorable) context.get("scorer");
DoubleValues scores = scorer == null ? null : DoubleValuesSource.fromScorer(scorer);
IndexSearcher searcher = (IndexSearcher) context.get("searcher");
diff --git a/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java b/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java
index 0b84c93..ba0e470 100644
--- a/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java
+++ b/lucene/queries/src/test/org/apache/lucene/queries/function/TestValueSources.java
@@ -38,6 +38,7 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.queries.function.docvalues.FloatDocValues;
import org.apache.lucene.queries.function.valuesource.*;
import org.apache.lucene.search.CheckHits;
+import org.apache.lucene.search.DoubleValuesSource;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
@@ -580,6 +581,11 @@ public class TestValueSources extends LuceneTestCase {
assertNull(source2.searcher);
}
+
+ public void testBuildingFromDoubleValues() throws Exception {
+ DoubleValuesSource dvs = ValueSource.fromDoubleValuesSource(DoubleValuesSource.fromDoubleField("double")).asDoubleValuesSource();
+ assertHits(new FunctionQuery(ValueSource.fromDoubleValuesSource(dvs)), new float[] { 3.63f, 5.65f });
+ }
/**
* Asserts that for every doc, the {@link FunctionValues#exists} value