我知道如何用查询字符串查询IndexTank,有或没有地理位置。但是如何在没有查询字符串而只有地理位置的情况下进行查询呢?
index.addFunction(5, "-miles(d[0], d[1], q[0], q[1])");
results = index.search(Query.forString(queryString)
.withScoringFunction(5)
.withQueryVariable(0, latitude)
.withQueryVariable(1, longitude));
如果queryString为null或空字符串,则不起作用。
谢谢。
如果您想获取距离某个点一定距离内的所有文档,您需要发出一个匹配所有文档的查询,并在计算距离的评分函数上使用一个函数过滤器。
例如,如果所有文档都有一个值为"all"的"match"字段,您可以搜索:
results = index.search(Query.forString("match:all")
.withScoringFunction(5)
.withQueryVariable(0, latitude)
.withQueryVariable(1, longitude)
.withFunctionFilter(5, 0, 10));
这将获取(lat,long)范围内10英里内的所有文档。