mirror of https://github.com/apache/lucene.git
LUCENE-10584: Properly support #getSpecificValue for hierarchical dims in SSDV faceting (#929)
This commit is contained in:
parent
d52122605d
commit
0b5e0bfa4f
|
@ -95,6 +95,9 @@ Bug Fixes
|
||||||
|
|
||||||
* LUCENE-10574: Prevent pathological O(N^2) merging. (Adrien Grand)
|
* LUCENE-10574: Prevent pathological O(N^2) merging. (Adrien Grand)
|
||||||
|
|
||||||
|
* LUCENE-10584: Properly support #getSpecificValue for hierarchical dims in SSDV faceting.
|
||||||
|
(Greg Miller)
|
||||||
|
|
||||||
* LUCENE-10582: Fix merging of overridden CollectionStatistics in CombinedFieldQuery (Yannick Welsch)
|
* LUCENE-10582: Fix merging of overridden CollectionStatistics in CombinedFieldQuery (Yannick Welsch)
|
||||||
|
|
||||||
* LUCENE-10598: SortedSetDocValues#docValueCount() should be always greater than zero. (Lu Xugang)
|
* LUCENE-10598: SortedSetDocValues#docValueCount() should be always greater than zero. (Lu Xugang)
|
||||||
|
|
|
@ -74,8 +74,9 @@ abstract class AbstractSortedSetDocValueFacetCounts extends Facets {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Number getSpecificValue(String dim, String... path) throws IOException {
|
public Number getSpecificValue(String dim, String... path) throws IOException {
|
||||||
if (path.length != 1) {
|
if (stateConfig.getDimConfig(dim).hierarchical == false && path.length != 1) {
|
||||||
throw new IllegalArgumentException("path must be length=1");
|
throw new IllegalArgumentException(
|
||||||
|
dim + " is not configured as hierarchical, path must be length=1");
|
||||||
}
|
}
|
||||||
int ord = (int) dv.lookupTerm(new BytesRef(FacetsConfig.pathToString(dim, path)));
|
int ord = (int) dv.lookupTerm(new BytesRef(FacetsConfig.pathToString(dim, path)));
|
||||||
if (ord < 0) {
|
if (ord < 0) {
|
||||||
|
|
|
@ -147,6 +147,11 @@ public class TestSortedSetDocValuesFacets extends FacetTestCase {
|
||||||
facets.getAllDims(0);
|
facets.getAllDims(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// test getSpecificValue
|
||||||
|
assertEquals(2, facets.getSpecificValue("a", "foo"));
|
||||||
|
expectThrows(
|
||||||
|
IllegalArgumentException.class, () -> facets.getSpecificValue("a", "foo", "bar"));
|
||||||
|
|
||||||
// DrillDown:
|
// DrillDown:
|
||||||
DrillDownQuery q = new DrillDownQuery(config);
|
DrillDownQuery q = new DrillDownQuery(config);
|
||||||
q.add("a", "foo");
|
q.add("a", "foo");
|
||||||
|
@ -358,6 +363,15 @@ public class TestSortedSetDocValuesFacets extends FacetTestCase {
|
||||||
assertEquals(
|
assertEquals(
|
||||||
"dim=c path=[buzz, bif] value=2 childCount=1\n baf (2)\n",
|
"dim=c path=[buzz, bif] value=2 childCount=1\n baf (2)\n",
|
||||||
facets.getTopChildren(10, "c", "buzz", "bif").toString());
|
facets.getTopChildren(10, "c", "buzz", "bif").toString());
|
||||||
|
|
||||||
|
// test getSpecificValue (and make sure hierarchical dims are supported: LUCENE-10584):
|
||||||
|
assertEquals(2, facets.getSpecificValue("c", "buzz"));
|
||||||
|
// should be able to request deeper paths on hierarchical dims:
|
||||||
|
assertEquals(1, facets.getSpecificValue("c", "buzz", "bee"));
|
||||||
|
// ... but not on non-hierarchical dims:
|
||||||
|
expectThrows(
|
||||||
|
IllegalArgumentException.class, () -> facets.getSpecificValue("a", "foo", "bar)"));
|
||||||
|
|
||||||
// DrillDown:
|
// DrillDown:
|
||||||
DrillDownQuery q = new DrillDownQuery(config);
|
DrillDownQuery q = new DrillDownQuery(config);
|
||||||
q.add("a", "foo");
|
q.add("a", "foo");
|
||||||
|
|
Loading…
Reference in New Issue