繁体   English   中英

在 Solr 搜索中也显示没有孩子的父母

[英]Showing parents without children in Solr search too

我正在调用一个相当复杂的搜索查询,以便只有父母(没有孩子的根记录)和孩子的父母出现在结果中(搜索父母和孩子记录)。 我从( Solr 搜索顶级和嵌套记录)获得的查询效果很好,除非父级没有任何子级,否则它不会显示在搜索结果中。 我希望您能帮助我更改查询,以便没有孩子的父母也出现在搜索结果中。

我正在使用的带有 url 参数的查询如下所示:

http://localhost:8983/solr/b-core/select?&fq=solr_type:parent&childFilter={!edismax%20v=$q.user}&fl=*,[child%20childFilter=$childFilter%20%20limit=1000]&q={!parent%20which=solr_type:parent%20v=$q.child}%20OR%20{!edismax%20v=$q.user}&q.child=%20%2Bsolr_type:child%20%20%2B{!edismax%20v=$q.user}&q.user=suppressed_b:False&rows=10&start=0&sort=&fq=solr_type:parent

使用参数转换为以下结果:

status: 0,
QTime: 9,
params: {
childFilter: "{!edismax v=$q.user}",
ps: "0",
indent: "2",
echoParams: "all",
fl: "*,[child childFilter=$childFilter  limit=1000]",
fq: [
"solr_type:parent",
"solr_type:parent"
],
tie: "0.01",
defType: "lucene",
qf: "...
      ",
q.child: " +solr_type:child  +{!edismax v=$q.user}",
wt: "json",
mm: "6<-1 6<90%",
qs: "1",
q.alt: "*:*",
facet.field: [
...
],
start: "0",
sort: "",
rows: "10",
q: "{!parent which=solr_type:parent v=$q.child} OR {!edismax v=$q.user}",
facet.limit: "10",
spellcheck: "true",
pf: "...
      ",
q.user: "suppressed_b:False",
facet.mincount: "1",
facet: "true",
rid: "-2221"
}
},

带有孩子的上传记录如下所示: https://drive.google.com/file/d/1wZoCZDUS7evpA8ssSvSB1WlWmvNgp_wE/view?usp=sharing

并且在没有子项的情况下重新发布此记录(例如,删除“ childDocuments ”列表)可防止无子项的父项在任何地方搜索期间显示在结果中。

在修复上述搜索以便孩子的父母和无子女的父母记录出现在搜索结果中时,任何指导将不胜感激。

谢谢你的时间。

问题出在您的q参数中。 人类一眼看去,结构清晰——一个 boolean OR 两个子句,其中一个是“父”查询,右边是“edismax”。 但是对于 Solr,如果查询字符串以{! 如果存在v local-param,则忽略下一个}之后的所有内容。 解决方案很简单——只需在其中放置一个空格,就像我看到你已经为q.child所做的那样(实际上并不需要那个空间)。 我提交了这个: https://issues.apache.org/jira/browse/SOLR-15906

暂无
暂无

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

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