IndexTank:如何查询没有查询字符串,只有地理位置



我知道如何用查询字符串查询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英里内的所有文档。

最新更新