需要帮助将SQL查询转换为Solr查询

时间:2014-10-04 15:35:47

标签: join solr

请帮我将以下SQL查询转换为Solr查询。

SELECT PolicyNumber,EndorsementNumber
FROM Policy_Core a
WHERE AgencyCode = '500'
 AND PolicyNumber = 5201070001753
 AND EndorsementNumber = (SELECT MAX (EndorsementNumber)
                            FROM Policy_Core b
                           WHERE a.PolicyNumber = b.PolicyNumber).

我在Solr服务器中有一个具有以下结构的核心。

id (Unique ID) PolicyNumber(Number),  EndorsementNumber(Number), AgencyCode(Number)
5201070001753-1 5201070001753       ,1                   ,500
5201070001753-2 5201070001753       ,2                   ,500
5201070001753-3 5201070001753       ,3                   ,500
5201070001753-4 5201070001753       ,4                   ,100
5201070001753-5 5201070001753       ,5                   ,100

我准备了以下Solr查询。

http://localhost:8983/solr/db/select?q=PolicyNumber:5201070001753 AND AgencyCode:500 &fq={!collapse field=PolicyNumber max=EndorsementNumber}

这会返回错误的结果(因为它正在进行结果分组)。根据定义的记录进入核心,我期待Null / No结果,但是我得到一条记录,其中EndorsementNumber为3。 Solr执行以下查询。我需要帮助创建solr查询到自己的JOin POlicy核心以获得PolicyNumber的最大EndorsementNumber

SELECT PolicyNumber,EndorsementNumber
FROM Policy_Core a
WHERE AgencyCode = '500'
AND PolicyNumber = 5201070001753
GROUP BY PolicyNumber,EndorsementNumber HAVING EndorsementNumber = MAX(EndorsementNumber)

1 个答案:

答案 0 :(得分:0)

假设EndorsementNumber是一个数字字段 - 例如TrieIntField - 我认为您可以使用"sort""rows"查询参数获得所需的答案。以下查询应该有效:

http://localhost:8983/solr/db/select?q=PolicyNumber:5201070001753 AND AgencyCode:500 &sort=EndorsementNumber desc&rows=1

这会给你

id (Unique ID) PolicyNumber(Number),  EndorsementNumber(Number), AgencyCode(Number)
5201070001753-5 5201070001753       ,5                   ,100