En solr 8.7 tengo las siguientes configuraciones:
schema.xml
<schema name="default-config" version="1.6">
<types>
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="_nest_path_" class="solr.NestPathField"/>
</types>
<fields>
<field name="_root_" type="string" indexed="true" stored="false"/>
<field name="_nest_path_" type="_nest_path_" indexed="true" stored="false"/>
<field name="id" type="string" indexed="true" stored="true"/>
<dynamicField name="*" type="text" indexed="true" stored="true"/>
</fields>
<uniqueKey>id</uniqueKey>
</schema>
Documentos a indexar:
{
id: 1,
object: "doc",
items: (
{
id: 2,
content: "lorem ipsum same"
}
)
},
{
id: 3,
object: "doc",
items: (
{
id: 4,
content: "hello word same"
},
{
id: 5,
content: "lorem ipsum same"
}
)
}
Query:
q={!parent which="object:doc AND id:*"} +(content:same AND id:4)
fl=*, (child childFilter="smc_content:same AND smc_id:4")
Resultado actual:
{
"responseHeader":{
"status":0,
"QTime":3,
"params":{
"q":"{!parent which="object:doc AND id:*"} +(content:same AND id:4)",
"fl":"*, (child childFilter="content:same AND id:4")",
"_":"1612202589981"}},
"response":{"numFound":1,"start":0,"numFoundExact":true,"docs":(
{
"id":"3",
"object":"doc",
"items":(
{
"id":"4",
"content":"hello word same"},
{
"id":"5",
"content":"lorem ipsum same"})})
}}
El resultado esperado es el siguiente:
{
"id": "3",
"object": "doc",
"items": (
{
"id": "4",
"content": "hello word same"
}
)
}
He probado diferentes configuraciones que he encontrado en la documentación de SOLR 8.7 y en diversos foros que sugieren que para usar multiples condiciones en el transformador (child) childDocumentTransformer se necesitan definir como variable y entre paréntesis, pero no he podido hacerlo andar. Adjunto el ejemplo de lo detallado: