Hi! We have documents with one level of child documents. One use case we have is returning (or getting stats for) child documents, filtering by field values on both the child and the parent.
This works for «must» filter on parent: q= *:* fq=doc_type:child fq=child_field:child_field_value fq={!child of=doc_type:parent}parent_field:parent_field_value But a «must not» filter on parent returns zero documents: fq={!child of=doc_type:parent}-parent_field:parent_field_value Rewriting to: fq=-{!child of=doc_type:parent}parent_field:parent_field_value seems to work. Should these two be equivalent? A concrete example of a filter on parent document: enum_attr_2021:2738 (integer field) Stepping through query parsing «{!child of=docType:object}enum_attr_2021:2730» is parsed to «ToChildBlockJoinQuery (+(-enum_attr_2021:[2738 TO 2738]))» «-{!child of=docType:object}enum_attr_2021:2730» is parsed to «-ToChildBlockJoinQuery (+enum_attr_2021:[2730 TO 2730])» 1. SOLR-9327 <https://issues.apache.org/jira/browse/SOLR-9327> describes similar behaviour for graph queries. -- Kind regards, Marvin B. Lillehaug