0

我有一个类似于以下内容的 solr 架构:

    `<field type="string" name="id"></field>`
    `<field type="int" name="version"></field>`
    `<field type="string" name="foreignId"></field>`

我有以下参数用于从 solr 核心获取结果集:

q:foreignId={SomeId}

请注意,可能有多个文档(并且很可能)包含相同的外部 id,但 id 不同。此外,具有相同外部 id 的多个文档可能具有相同的 id,但版本不同。

我的问题是,我只需要查询每个 id 的最高版本,以获得外国 id。

例如,使用文档(请注意我的简写):

id:1 版本:1 foreignid:1337

id:1 版本:2 foreignId:1337

id:2 版本:1 foreignId:9999

我想查询外国 id 1337 和 9999,但只收到两个结果:

id:1 版本:2 foreignId:1337

id:2 版本:1 foreignId:9999

有什么想法吗?谢谢!

4

2 回答 2

0

可能需要的是对多个字段进行分组(检查SOLR-2526)和内部组的排序功能能够返回单个版本的最大版本,目前 Solr 不支持。

于 2013-10-08T06:28:19.923 回答
0

您可以使用Max function仅获取 id 的最大值,例如:

max(version,0)

http://wiki.apache.org/solr/FunctionQuery#max

于 2013-09-09T14:00:11.323 回答