这是我的数据结构:
Users (UserName, Location)
UserRecords (RecordId, Username, Category)
示例数据
Users:
(Bob, "38.45,-88.14"),
(Alice, "36.11,-87.32"),
(Jake, "37.45,-85.02")
UserRecords:
(1, Bob, Medical),
(2, Bob, Contact),
(3, Alice, Medical),
(4, Jake, Social)
我想查询其所有者属于某个边界框的特定类型的所有记录ID。示例:想要所有医疗记录ID,其所有者在(36,-89)到(39,-88)之内:
这是我的Solr查询
q={!join+from=Username+to=UserName+fromIndex=Users}+(Location:[36.00,-89.00 TO 39.00,-88.00]) +(Category:Medical)
错误是:类别字段未定义
如果我只使用Location重复相同的请求,则返回空结果而不会出错。
我可以告诉位置查询有效,因为此调用会返回所有需要的用户:
q=Location:[36.00,-89.00 TO 39.00,-88.00]
有什么建议吗?
答案 0 :(得分:1)
你可以尝试这样的事情:
/solr/UserRecords/select/?q=Category:Medical&fq={!join+from=Username+to=UserName+fromIndex=Users}Location:[36.00,-89.00 TO 39.00,-88.00]
我假设您有2个名为“Users”和“UserRecords”的集合
答案 1 :(得分:0)
结果证明效果很好:
q=
{!join+from=id+to=Username+fromIndex=Users}
{!geofilt+sfield=Location+pt=38.89,-77.03+d=5}
& fq=Category:Medical
它不是以前要求的边界框,而是更好的方法