【问题标题】:IndexTank: how to query without a query string, geolocation onlyIndexTank:如何在没有查询字符串的情况下进行查询,仅限地理位置
【发布时间】:2011-04-23 08:01:01
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: java search indextank


    【解决方案1】:

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

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

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

    这将获取 (lat,long) 10 英里范围内的所有文档。

    【讨论】:

    • 最后一行应该是:.withFunctionFilter(5, -10, 0)); (感谢豪尔赫)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多