Solr搜索父元素,嵌套查询,块连接的嵌套所有子元素。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr搜索父元素,嵌套查询,块连接的嵌套所有子元素。相关的知识,希望对你有一定的参考价值。

我正在努力解决这个问题。如何在Solr版本7.2中搜索父元素的嵌套所有子元素。在单一领域搜索我能够但在所有领域都没有解决方案。我已阅读所有文档,但确切的解决方案不存在可以有人帮我这个吗?

我的查询如下:

 q={!parent which="doc_content_type:parentDocument"}"person"&fl=*, [child 
 parentFilter=doc_content_type:parentDocument limit=1000]

<hmd:emailAddresses>
    <hmd:emailAddress>someone@example.org</hmd:emailAddress>
</hmd:emailAddresses>
<hmd:mailstop>88 ui</hmd:mailstop>
<hmd:description>
    <hmd:aboutMe></hmd:aboutMe>
</hmd:description>
<hmd:names>
    <hmd:fullName>Person Username Name</hmd:fullName>
    <hmd:firstAndMiddleName>UserMiddlename UserName</hmd:firstAndMiddleName>
    <hmd:firstName>Name person</hmd:firstName>
    <hmd:middleName/>
    <hmd:lastName>Lastname</hmd:lastName>
    <hmd:alternateNames>
        <hmd:alternateName type="">Some alt name person</hmd:alternateName>
    </hmd:alternateNames>
</hmd:names>
</hmd:person>

此外,我也尝试过其他方式,而不是父母的孩子:

   q={!child of="doc_content_type:parentDocument"}"person"&fl=*, [child 
   parentFilter=doc_content_type:parentDocument limit=1000]

我希望结果是包含子元素的所有“人”,而不仅仅是给定的字段。请注意,我有多个搜索字段~500

答案

解决方案通常是让Solr将字段中的所有内容复制到一个字段中 - 然后搜索它。您可以使用匹配所有字段的copyField指令执行此操作:

<copyField source="*" dest="all_text" />

然后,您查询all_text而不是其他字段。

以上是关于Solr搜索父元素,嵌套查询,块连接的嵌套所有子元素。的主要内容,如果未能解决你的问题,请参考以下文章

超实用的SQL语句之嵌套查询

SQL语句 - 嵌套查询

SQL语句 - 嵌套查询

Hexo

margin的BUG

SQL数据查询之——嵌套查询