Solr中的复合查询

Solr中的复合查询,solr,lucene,Solr,Lucene,我有一个类似以下内容的solr模式: `<field type="string" name="id"></field>` `<field type="int" name="version"></field>` `<field type="string" name="foreignId"></field>` `` `` `` 我使用以下参数从solr core获取结果集: q:foreignd={S

我有一个类似以下内容的solr模式:

    `<field type="string" name="id"></field>`
    `<field type="int" name="version"></field>`
    `<field type="string" name="foreignId"></field>`
``
``
``
我使用以下参数从solr core获取结果集:

q:foreignd={SomeId}

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

我的问题是,我只需要查询每个id的最高版本,一个外来id

例如,对于文档(注意我的速记):

身份证号码:1 版本:1 国外:1337

身份证号码:1 版本:2 国外:1337

身份证号码:2 版本:1 国外:9999

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

身份证号码:1 版本:2 国外:1337

身份证号码:2 版本:1 国外:9999


有什么想法吗?谢谢

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

max(version,0)

可能需要的是对多个字段进行分组(检查),并且内部组的排序功能能够为max-one返回单个版本,这在Solr中目前不受支持

我曾想过这样做,但似乎不起作用。。。示例参数:q=id:testid&q=max(版本)仍然会返回多个文档(所有文档都具有相同的id,但版本不同)。同样,我有一个用例:q=id:testid1或id:testid2&q=max(版本),我希望返回两个文档。一个是testid1的最大版本,另一个是testid2的最大版本。如果您需要更多信息,请告诉我!可能需要的是对多个字段进行分组,并且内部组的排序功能能够为max one返回单个版本,这在Solr中目前不受支持。似乎就是这样!如果您愿意,请找到一个支持它的链接,并添加为答案,我会将其标记为正确:)添加了一个带有JIRA编号的答案,用于在多个字段上分组,您可以投票将其包含在Solr中。您能帮我解决我的问题吗?非常感谢。