2017-10-18 71 views
0

我有一个Solr索引,其中包含对象(实际上,WW1军人的历史图片的记录以及口述历史音频记录),它们都有对已命名代理的引用。索引还包含所有代理的简单记录,而对象记录包含这些代理的标识(但请注意代理记录不包含对象标识)。如何查找所有具有相匹配的元数据值的文档Solr

典型对象记录摘录:

"agentReference": [ 
     "agent-571916" 
    ], 

我怕我是相当新的Solr的,所以我不知道这是一个简单的(确实是明显的)问题,或更复杂。我想得到的是具有多个与它们关联的对象的代理ID列表以及这些对象的ID。因此,像...

剂-571916: 对象12345 对象23456 对象98765

道歉,如果这是一个无知的问题。我可以编写一个脚本来遍历所有代理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

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/

+0

可悲的是端点当前仍在运行的Solr 4.10.4但工作正在进行升级。一旦完成,我肯定会测试它,因为它看起来应该是答案。谢谢 – jamesinealing

+1

4.10支持数据透视,这是与旧语法相同的功能(如此处所用)。类似于'facet = true&facet.pivot.mincount = 1&facet.pivot = agentReference,objectId'可以工作,尽管对于返回格式有些冗长。 – MatsLindh

相关问题