繁体   English   中英

Solr 查询子文档并返回父级和过滤后的子级

[英]Solr query for child documents and return parents and filtered children

我在创建 Solr 查询以提取正确的文档时遇到问题,并且开始怀疑我正在尝试做的事情是否可能。

目前在 Solr 8.9 上使用托管模式,每个字段都使用通配符字段。

首先文件的样子

(因编辑内部业务语言而更改名称):


{
  "id": "COUNTY:1",
  "county_name_s": "Hertfordshire",
  "coordinates_s": {
    "id": "COUNTY:1COORDINATES:!",
    "lat_s": "54.238948",
    "long_s": "54.238948"
  },
  "cities": [
    {
      "id": "COUNTY:1CITY:1",
      "city_name_s": "St Albans",
      "size": {
        "id": "COUNTY:1CITY:1SIZE:1",
        "sq_ft_s": "100",
        "sq_meters_s": "5879"
      }
    },
    {
      "id": "COUNTY:1CITY:2",
      "city_name_s": "Watford",
      "size": {
        "id": "COUNTY:1CITY:2SIZE:2",
        "sq_ft_s": "150",
        "sq_meters_s": "10000"
      }
    }
  ],
  "mayor": {
    "title_s": "Mrs.",
    "first_name_s": "Sheila",
    "last_name_s": "Smith"
  }
}

以及我想要返回的内容:

{
  "id": "COUNTY:1",
  "county_name_s": "Hertfordshire",
  "coordinates": {
    "id": "COUNTY:1COORDINATES:!",
    "lat_s": "54.238948",
    "long_s": "54.238948"
  },
  "cities": [
    {
      "id": "COUNTY:1CITY:1",
      "city_name_s": "St Albans",
      "size": {
        "id": "COUNTY:1CITY:1SIZE:1",
        "sq_ft_s": "100",
        "sq_meters_s": "5879"
      }
    }
  ],
  "mayor": {
    "title_s": "Mrs.",
    "first_name_s": "Sheila",
    "last_name_s": "Smith"
  }
}

基本上我的目标是或多或少地返回整个事物,但是过滤掉其中一个城市。 例如,城市的条件类似于city_name_s:"St Albans" 所以这就是说我想要父母和所有孩子,但是如果孩子在那个数组中(即cities array ),那么给定的字段( city_name_s )必须等于我定义的值,或者我们不想要那个孩子。

我尝试过的事情:

我在这里基本上尝试了两种方法:

  1. 我尝试使用 {!child} 和 {!parent} 来获得我想要的结果。 目前我只能从市级或整个事情中得到一些东西,就好像县级没有过滤器一样。

  2. 我尝试更改 childFilter 选项的值,例如:

    • city_name_s:"St Albans" OR (*:* NOT city_name_s:[* TO *])尝试说“如果字段存在,它应该是这个”。

无论如何,我开始对此没有想法了; 在过去的几天里一直在破解它,并没有真正接近它。

提前感谢您的帮助; 目前把我的头撞在墙上,所以任何建议都非常受欢迎:)

我在 solr 9.0.0 中遇到了类似的问题,这为我解决了这个问题: Apache Solr Filter on Child Documents

在您的情况下,只需添加fl=*,[child childFilter=city_name_s:"St Albans"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM