Solr中的复合查询

时间:2013-09-09 13:51:14

标签: solr lucene

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

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

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

问: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

有什么想法?谢谢!

2 个答案:

答案 0 :(得分:0)

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

max(version,0)

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

答案 1 :(得分:0)

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