This is an automated email from the ASF dual-hosted git repository.
cpoerschke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 3f634f9 SOLR-15606: rename (deprecated) Insanity.java to
NumericHidingLeafReader.java (#276)
3f634f9 is described below
commit 3f634f97161d719683cbb0f1e8a56481b77979a3
Author: Christine Poerschke <[email protected]>
AuthorDate: Tue Sep 7 14:28:06 2021 +0100
SOLR-15606: rename (deprecated) Insanity.java to
NumericHidingLeafReader.java (#276)
---
solr/CHANGES.txt | 2 +
.../java/org/apache/solr/request/SimpleFacets.java | 18 ++++----
...{Insanity.java => NumericHidingLeafReader.java} | 50 ++++++++++------------
.../solr/search/function/OrdFieldSource.java | 10 ++---
.../search/function/ReverseOrdFieldSource.java | 10 ++---
5 files changed, 43 insertions(+), 47 deletions(-)
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index b6a4fdc..1d57d02 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -340,6 +340,8 @@ Other Changes
* SOLR-15612: Remove unecessary https8 jetty module (Houston Putman)
+* SOLR-15606: Rename (deprecated) Insanity.java to
NumericHidingLeafReader.java adjusting callers to match. (Christine Poerschke)
+
Bug Fixes
---------------------
* SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor
that could lead to out of order execution
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 48e9425..d98cf79 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -81,7 +81,7 @@ import org.apache.solr.schema.TrieField;
import org.apache.solr.search.BitDocSet;
import org.apache.solr.search.DocSet;
import org.apache.solr.search.Grouping;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
import org.apache.solr.search.QParser;
import org.apache.solr.search.QueryParsing;
import org.apache.solr.search.QueryUtils;
@@ -718,9 +718,9 @@ public class SimpleFacets {
BytesRef prefixBytesRef = prefix != null ? new BytesRef(prefix) : null;
final TermGroupFacetCollector collector =
TermGroupFacetCollector.createTermGroupFacetCollector(groupField, field,
multiToken, prefixBytesRef, 128);
- Collector groupWrapper = getInsanityWrapper(groupField, collector);
- Collector fieldWrapper = getInsanityWrapper(field, groupWrapper);
- // When GroupedFacetCollector can handle numerics we can remove the
wrapped collectors
+ Collector groupWrapper = getNumericHidingWrapper(groupField, collector);
+ Collector fieldWrapper = getNumericHidingWrapper(field, groupWrapper);
+ // When GroupFacetCollector can handle numerics we can remove the wrapped
collectors
searcher.search(base.getTopFilter(), fieldWrapper);
boolean orderByCount = sort.equals(FacetParams.FACET_SORT_COUNT) ||
sort.equals(FacetParams.FACET_SORT_COUNT_LEGACY);
@@ -750,16 +750,16 @@ public class SimpleFacets {
return facetCounts;
}
- private Collector getInsanityWrapper(final String field, Collector
collector) {
+ private Collector getNumericHidingWrapper(final String field, Collector
collector) {
SchemaField sf = searcher.getSchema().getFieldOrNull(field);
if (sf != null && !sf.hasDocValues() && !sf.multiValued() &&
sf.getType().getNumberType() != null) {
- // it's a single-valued numeric field: we must currently create insanity
:(
- // there isn't a GroupedFacetCollector that works on numerics right
now...
+ // it's a single-valued numeric field: we must hide the numeric because
+ // there isn't a GroupFacetCollector that works on numerics right now...
return new FilterCollector(collector) {
@Override
public LeafCollector getLeafCollector(LeafReaderContext context)
throws IOException {
- LeafReader insane = Insanity.wrapInsanity(context.reader(), field);
- return in.getLeafCollector(insane.getContext());
+ LeafReader leafReader =
NumericHidingLeafReader.wrap(context.reader(), field);
+ return in.getLeafCollector(leafReader.getContext());
}
};
} else {
diff --git a/solr/core/src/java/org/apache/solr/search/Insanity.java
b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
similarity index 77%
rename from solr/core/src/java/org/apache/solr/search/Insanity.java
rename to solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
index 076a025..d3c73db 100644
--- a/solr/core/src/java/org/apache/solr/search/Insanity.java
+++ b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
@@ -32,39 +32,34 @@ import org.apache.lucene.index.SortedSetDocValues;
import org.apache.solr.uninverting.UninvertingReader;
/**
- * Lucene 5.0 removes "accidental" insanity, so you must explicitly
- * create it.
- * <p>
- * This class creates insanity for two specific situations:
+ * This class is useful in two specific situations:
* <ul>
* <li>calling {@code ord} or {@code rord} functions on a single-valued
numeric field.
* <li>doing grouped faceting ({@code group.facet}) on a single-valued
numeric field.
* </ul>
*/
@Deprecated
-public class Insanity {
-
- /**
- * Returns a view over {@code sane} where {@code insaneField} is a string
- * instead of a numeric.
- */
- public static LeafReader wrapInsanity(LeafReader sane, String insaneField) {
- return UninvertingReader.wrap(
- new InsaneReader(sane, insaneField),
- Collections.singletonMap(insaneField,
UninvertingReader.Type.SORTED)::get);
- }
-
- /** Hides the proper numeric dv type for the field */
- private static class InsaneReader extends FilterLeafReader {
- final String insaneField;
- final FieldInfos fieldInfos;
+public class NumericHidingLeafReader extends FilterLeafReader {
- InsaneReader(LeafReader in, String insaneField) {
+ /**
+ * Returns a view over {@code leafReader} where {@code field} is a string
+ * instead of a numeric.
+ */
+ public static LeafReader wrap(LeafReader leafReader, String field) {
+ return UninvertingReader.wrap(
+ new NumericHidingLeafReader(leafReader, field),
+ Collections.singletonMap(field, UninvertingReader.Type.SORTED)::get);
+ }
+
+ private final String field;
+ private final FieldInfos fieldInfos;
+
+ private NumericHidingLeafReader(LeafReader in, String field) {
super(in);
- this.insaneField = insaneField;
+ this.field = field;
ArrayList<FieldInfo> filteredInfos = new ArrayList<>();
for (FieldInfo fi : in.getFieldInfos()) {
- if (fi.name.equals(insaneField)) {
+ if (fi.name.equals(field)) {
filteredInfos.add(new FieldInfo(fi.name, fi.number, fi.hasVectors(),
fi.omitsNorms(),
fi.hasPayloads(),
fi.getIndexOptions(), DocValuesType.NONE, -1, Collections.emptyMap(),
fi.getPointDimensionCount(),
fi.getPointIndexDimensionCount(), fi.getPointNumBytes(),
@@ -78,7 +73,7 @@ public class Insanity {
@Override
public NumericDocValues getNumericDocValues(String field) throws
IOException {
- if (insaneField.equals(field)) {
+ if (this.field.equals(field)) {
return null;
} else {
return in.getNumericDocValues(field);
@@ -87,7 +82,7 @@ public class Insanity {
@Override
public BinaryDocValues getBinaryDocValues(String field) throws IOException
{
- if (insaneField.equals(field)) {
+ if (this.field.equals(field)) {
return null;
} else {
return in.getBinaryDocValues(field);
@@ -96,7 +91,7 @@ public class Insanity {
@Override
public SortedDocValues getSortedDocValues(String field) throws IOException
{
- if (insaneField.equals(field)) {
+ if (this.field.equals(field)) {
return null;
} else {
return in.getSortedDocValues(field);
@@ -105,7 +100,7 @@ public class Insanity {
@Override
public SortedSetDocValues getSortedSetDocValues(String field) throws
IOException {
- if (insaneField.equals(field)) {
+ if (this.field.equals(field)) {
return null;
} else {
return in.getSortedSetDocValues(field);
@@ -129,5 +124,4 @@ public class Insanity {
return in.getReaderCacheHelper();
}
- }
}
diff --git
a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
index e07a7f5..88acf7f 100644
--- a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
@@ -36,7 +36,7 @@ import org.apache.lucene.util.mutable.MutableValueInt;
import org.apache.solr.common.SolrException;
import org.apache.solr.index.SlowCompositeReaderWrapper;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
import org.apache.solr.search.SolrIndexSearcher;
/**
@@ -83,14 +83,14 @@ public class OrdFieldSource extends ValueSource {
"ord() is not supported over Points based field " + field);
}
if (sf != null && sf.hasDocValues() == false && sf.multiValued() ==
false && sf.getType().getNumberType() != null) {
- // it's a single-valued numeric field: we must currently create
insanity :(
+ // it's a single-valued numeric field: we must hide the numeric
List<LeafReaderContext> leaves = is.getIndexReader().leaves();
- LeafReader insaneLeaves[] = new LeafReader[leaves.size()];
+ LeafReader hidingLeaves[] = new LeafReader[leaves.size()];
int upto = 0;
for (LeafReaderContext raw : leaves) {
- insaneLeaves[upto++] = Insanity.wrapInsanity(raw.reader(), field);
+ hidingLeaves[upto++] = NumericHidingLeafReader.wrap(raw.reader(),
field);
}
- r = SlowCompositeReaderWrapper.wrap(new MultiReader(insaneLeaves));
+ r = SlowCompositeReaderWrapper.wrap(new MultiReader(hidingLeaves));
} else {
// reuse ordinalmap
r = ((SolrIndexSearcher)o).getSlowAtomicReader();
diff --git
a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
index 0451213..44c3b23 100644
---
a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
+++
b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
@@ -34,7 +34,7 @@ import org.apache.lucene.search.SortedSetSelector;
import org.apache.solr.common.SolrException;
import org.apache.solr.index.SlowCompositeReaderWrapper;
import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
import org.apache.solr.search.SolrIndexSearcher;
/**
@@ -83,14 +83,14 @@ public class ReverseOrdFieldSource extends ValueSource {
"rord() is not supported over Points based field " + field);
}
if (sf != null && sf.hasDocValues() == false && sf.multiValued() ==
false && sf.getType().getNumberType() != null) {
- // it's a single-valued numeric field: we must currently create
insanity :(
+ // it's a single-valued numeric field: we must hide the numeric
List<LeafReaderContext> leaves = is.getIndexReader().leaves();
- LeafReader insaneLeaves[] = new LeafReader[leaves.size()];
+ LeafReader hidingLeaves[] = new LeafReader[leaves.size()];
int upto = 0;
for (LeafReaderContext raw : leaves) {
- insaneLeaves[upto++] = Insanity.wrapInsanity(raw.reader(), field);
+ hidingLeaves[upto++] = NumericHidingLeafReader.wrap(raw.reader(),
field);
}
- r = SlowCompositeReaderWrapper.wrap(new MultiReader(insaneLeaves));
+ r = SlowCompositeReaderWrapper.wrap(new MultiReader(hidingLeaves));
} else {
// reuse ordinalmap
r = ((SolrIndexSearcher)o).getSlowAtomicReader();