2014-10-04 60 views
0

请帮助我将以下SQL查询转换为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 no 3。 Solr执行以下查询。我需要帮助创建solr查询以使Joel POlicy核心与它自己一起获得PolicyNumber的max EndorsementNumber

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

你看着这个链接? https://wiki.apache.org/solr/Join检查“与SQL比较”部分 – jay 2014-10-06 00:42:01

回答

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