![](/img/trans.png)
[英]Solr - how to get children of parent documents where parents are filtered by multiple criteria?
[英]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
)必须等于我定义的值,或者我们不想要那个孩子。
我在这里基本上尝试了两种方法:
我尝试使用 {!child} 和 {!parent} 来获得我想要的结果。 目前我只能从市级或整个事情中得到一些东西,就好像县级没有过滤器一样。
我尝试更改 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.