我有一个Solr索引,其中包含对象(实际上,WW1军人的历史图片的记录,以及口述历史录音),这些对象都有对命名代理的引用。索引还包含所有代理的简单记录,对象记录包含这些的ID(但请注意,代理记录不包含对象ID)。
典型的对象记录提取:
"agentReference": [
"agent-571916"
],
我担心我对Solr相当新,所以我不知道这是一个简单(确实很明显)的问题,还是更复杂的问题。我想得到的是具有与之关联的多个对象的代理ID列表,以及这些对象的ID。所以......就像......
agent-571916: 对象12345 对象23456 对象98765
如果这是一个无知的问题,请道歉。我可以编写一个脚本来循环遍历所有代理ID并调用查询来返回每个代理ID的对象,但我仍然必须将它们与唯一计数匹配,并且对于所讨论的数据集,它可能是关于16,000名代理商。
编辑:我应该补充一点,我当然可以通过agentReference进行操作,并应用facet.mincount = 2来让我接近,但它会取回我需要的每个代理的对象ID
<int name="agent-2876">5</int>
<int name="agent-443281">5</int>
<int name="agent-239379">4</int>
<int name="agent-257708">4</int>
<int name="agent-26269">4</int>
<int name="agent-279277">4</int>
答案 0 :(得分:1)
Json faceting可以解决你的问题[1]。
{
Agents: {
type: terms,
field: agentReference,
mincount: 1,
facet: {
Products: {
type: terms,
field: id,
mincount: 1
}
}
}}
从Solr 5开始提供,它非常易于使用。 根据文档,您可以根据需要对结果进行复杂化。