【问题标题】:Need help to transform SQL query into Solr query需要帮助将 SQL 查询转换为 Solr 查询
【发布时间】:2014-10-04 15:35:47
【问题描述】:

请帮我将以下 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)

【问题讨论】:

标签: join solr


【解决方案1】:

假设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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多