在Solr中搜索每个组的一个结果

时间:2011-09-18 13:27:19

标签: solr fieldcollapsing

我有一个带有一种版本控制的Solr架构。 ID包含版本号,因此现有文档保留为新索引。样本内容:

id = foo1
name = foo
version = 1
data = x

id = foo2
name = foo
version = 2
data = y

id = bar1
name = bar
version = 1
data = x

有两种不同的搜索方案:搜索所有版本或仅搜索最新版本。第一个是微不足道的,但是如何在data字段中仅针对每个name的最新版本实施搜索?在上面的示例中,我希望最近搜索“x”,并期望只打“bar1”。

我希望找到使用http://wiki.apache.org/solr/FieldCollapsing的解决方案,但是如果我用group.field=name搜索“x”,Solr将在搜索后进行分组,给出上面两个名称的版本1。我需要它更像是一个过滤查询。

1 个答案:

答案 0 :(得分:2)

不要认为现场崩溃会为你服务。

我可以想到几个选项 -

  1. 为文档生成唯一的相同ID,以便在添加新的当前文档时,旧文档将被覆盖,并且您始终只有一个版本的文档。
  2. 如果可以为文档维护一个额外的字段,表明状态为CURRENT。只有最新的文档才具有字段值,您需要重置所有其他版本文档的值。这样,您可以通过过滤查询轻松过滤掉最新文档,并使用过滤查询搜索所有版本。