1

我知道如何使用查询字符串查询 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 或空字符串,则它不起作用。

谢谢。

4

1 回答 1

3

如果要获取距某个点一定距离内的所有文档,则需要发出一个匹配所有文档的查询,并在计算距离的评分函数上使用函数过滤器。

例如,如果您的所有文档都有一个值为“all”的“匹配”字段,您可以搜索:

  results = index.search(Query.forString("match:all")
                    .withScoringFunction(5)
                    .withQueryVariable(0, latitude)
                    .withQueryVariable(1, longitude)
                    .withFunctionFilter(5, 0, 10));

这将获得(纬度,经度)10英里内的所有文件。

于 2011-04-23T14:05:31.983 回答