2011-04-23 93 views
1

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

谢谢。

回答

3

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

例如,如果您的所有文件都带有值“匹配”场“所有”,你可以搜索:

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

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

+0

最后一行应该是:.withFunctionFilter(5,-10,0)); (感谢豪尔赫) – Jason 2011-04-25 06:37:31