有没有一种好的方法来对子项执行Solr Parent块联接与过滤器查询(即,子查询集的结果会影响过滤器查询的子项上的过滤器)?
Solr提供了一种方便的方法来对父块连接的结果集执行过滤器查询。例如。
q={!parent which=doc_type:parent}content:dog
&fq={!parent which=doc_type:parent}comment:cat
但是请注意,这只会根据子级结果过滤父级结果集。完整的子级结果集两次都用于过滤器。
为了澄清,如果我插入带有孩子A和B的文档
{
"doc_type":"parent",
"id":"1",
__children__: [
{
"id":"A"
},
{
"id":"B"
}
]
}
我希望能够搜索A并过滤B来使结果什么都没有,因为id的子文档匹配项位于A上(而不是B上)。当前的行为是由于在查询或过滤器查询中都搜索了两个子项,因此结果返回。
相反,正常的文档过滤器行为是从结果集中删除不匹配的文档。例如。如果有两个ID为1和2的文档,而我以id:2的过滤查询搜索id:1,则不会退回任何文档。
我知道可以使用单个查询来实现正确的行为:
q={!parent which=doc_type:parent}id:A AND id:B
但是在某些情况下,首选使用过滤器查询尤其是。在q(或fq)值中使用了多个父级Block-join查询的情况下,您希望使用fq对其进行过滤。
如果当前的solr项目中目前没有实现此目标的方法,那么我希望您能指导它是否合理实施。
谢谢!