diff --git a/solr/core/src/test/org/apache/solr/search/join/BlockJoinNestedVectorsQParserTest.java b/solr/core/src/test/org/apache/solr/search/join/BlockJoinNestedVectorsQParserTest.java index 176aaf224c10..1243d4f7fae2 100644 --- a/solr/core/src/test/org/apache/solr/search/join/BlockJoinNestedVectorsQParserTest.java +++ b/solr/core/src/test/org/apache/solr/search/join/BlockJoinNestedVectorsQParserTest.java @@ -294,6 +294,23 @@ public void parentRetrievalByte_knnChildrenWithParentFilter_shouldReturnKnnParen "//result/doc[3]/str[@name='id'][.='2']"); } + @Test + public void parentRetrievalByte_knnChildrenWithMultipleParentFilters_shouldReturnKnnParents() { + assertQ( + req( + "q", "{!parent which=$allParents score=max v=$children.q}", + "fl", "id,score", + "children.q", + "{!knn f=vector_byte topK=3 parents.preFilter=$parentFilter1 parents.preFilter=$parentFilter2 childrenOf=$allParents}" + + BYTE_QUERY_VECTOR, + "allParents", "parent_s:[* TO *]", + "parentFilter1", "parent_s:(a c)", + "parentFilter2", "parent_s:(c e)"), + "//*[@numFound='2']", + "//result/doc[1]/str[@name='id'][.='8']", + "//result/doc[2]/str[@name='id'][.='2']"); + } + @Test public void parentRetrievalByte_knnChildrenWithParentFilterAndChildrenFilter_shouldReturnKnnParents() { @@ -311,6 +328,24 @@ public void parentRetrievalByte_knnChildrenWithParentFilter_shouldReturnKnnParen "//result/doc[2]/str[@name='id'][.='2']"); } + @Test + public void + parentRetrievalByte_knnChildrenWithMultipleParentFiltersAndChildrenFilter_shouldReturnKnnParents() { + assertQ( + req( + "q", "{!parent which=$allParents score=max v=$children.q}", + "fl", "id,score", + "children.q", + "{!knn f=vector_byte topK=3 preFilter=child_s:m parents.preFilter=$parentFilter1 parents.preFilter=$parentFilter2 childrenOf=$allParents}" + + BYTE_QUERY_VECTOR, + "allParents", "parent_s:[* TO *]", + "parentFilter1", "parent_s:(a c)", + "parentFilter2", "parent_s:(c e)"), + "//*[@numFound='2']", + "//result/doc[1]/str[@name='id'][.='8']", + "//result/doc[2]/str[@name='id'][.='2']"); + } + @Test public void parentRetrievalFloat_topKWithChildTransformerWithFilter_shouldUseOriginalChildTransformerFilter() {