1

这是我的数据结构:

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。示例:想要其所有者在 (36,-89) 到 (39,-88) 之间的所有 MEDICAL 记录 ID:

这是我的 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]

有什么建议么 ?

4

2 回答 2

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”的集合

于 2013-06-29T10:45:03.767 回答
0

结果证明效果很好:

q=
{!join+from=id+to=Username+fromIndex=Users}             
{!geofilt+sfield=Location+pt=38.89,-77.03+d=5}
& fq=Category:Medical

它不完全是先前要求的边界框,而是一种更好的方法

于 2013-07-12T20:55:12.780 回答