2

我有一个带有版本控制的 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 找到解决方案,但是如果我用 Solr 搜索“x”,group.field=name搜索后会分组,给我上面两个名称的版本 1。我需要它更像一个过滤器查询。

4

1 回答 1

2

不要认为字段崩溃会为您服务。

我可以想到几个选项 -

  1. 为文档生成一个唯一的相同 id,这样当您添加新的当前文档时,旧的文档会被覆盖,并且您始终只有一个文档版本。
  2. 如果可以为文档维护一个额外的字段,该字段将指示状态为当前。只有最新的文档才具有字段值,您需要为所有其他版本的文档重置该值。这样,您可以通过过滤查询轻松过滤出最新的文档,还可以使用过滤查询搜索所有版本。
于 2011-09-18T17:18:53.943 回答