微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Solr 的 [child] 文档转换器返回空的子字段

如何解决Solr 的 [child] 文档转换器返回空的子字段

我正在尝试在查询的字段列表中返回带有父级的子文档字段。

在 Solr 7.7 版本中,我们必须指定 fl=*,[child parentFilter=type:account],它会正确返回所有父字段以及类型为 account 的关联子文档。

在 Solr 8.x 版中,随着 _nest_path_ 的引入,情况发生了变化。我们在架构中正确地包含了 fieldType _nest_path_ 和字段 _nest_path_(它由 SolrJ 生成)。

<fieldType name="_nest_path_" class="solr.nestPathField" omitTermFreqAndPositions="true" omitnorms="true" maxCharsForDocValues="-1" stored="false"/>
<field name="_nest_path_" type="_nest_path_"/>

我们能够正确查询与父文档相关的子文档字段,但无法返回子文档字段。

在我的示例中,我有两个父文档(帐户),每个都有 3 个子文档(策略)。

这里是*:*返回的扁平结构

{
  "responseHeader":{
    "zkConnected":true,"status":0,"QTime":25,"params":{
      "q":"*:*","_":"1611069992439"}},"response":{"numFound":8,"start":0,"maxscore":1.0,"numFoundExact":true,"docs":[
      {
        "id":"policy-1","type":["policy"],"_version_":1689330740566687744},{
        "id":"policy-2",{
        "id":"policy-3",{
        "id":"account-1","name":["Harvey John Birdman"],"type":["account"],{
        "id":"policy-4","_version_":1689330740571930624},{
        "id":"policy-5",{
        "id":"policy-6",{
        "id":"account-2","name":["Billy George Zane"],"_version_":1689330740571930624}]
  }}

这是对q=type:account&fl=*,[child]

的回应
{
  "responseHeader":{
    "zkConnected":true,"QTime":28,"params":{
      "q":"type:account","fl":"*,[child]","response":{"numFound":2,"maxscore":0.5822426,"docs":[
      {
        "id":"account-1","_version_":1689330740571930624}]
  }}

如果我不返回任何父字段,我会得到空结果(没有子数据)

{
  "responseHeader":{
    "zkConnected":true,"QTime":29,"fl":"[child]","docs":[
      {},{}]
  }}

我在 SolrJ 上使用 Spring 的抽象,但是将 SolrJ 直接与 SolrInputDocument 一起使用会产生同样的结果。如果这些库中的任何一个存在任何已知错误,请提及这一点。

Solr 版本 = 8.5.2

SolrJ 版本 = 8.5.2

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。