如何在Solr

时间:2017-10-18 10:09:49

标签: solr

我有一个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>

1 个答案:

答案 0 :(得分:1)

Json faceting可以解决你的问题[1]。

{
Agents: {
    type: terms,
    field: agentReference,
    mincount: 1,
    facet: {
        Products: {
            type: terms,
            field: id,
            mincount: 1
        }
    }
}}

从Solr 5开始提供,它非常易于使用。 根据文档,您可以根据需要对结果进行复杂化。

[1] http://yonik.com/json-facet-api/