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

时间:2011-04-23 08:01:02

标签: java search 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或空字符串,则它不起作用。

感谢。

1 个答案:

答案 0 :(得分:3)

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

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

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

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