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));

これにより、すべてのドキュメントが(lat、long)から10マイル以内に取得されます。

于 2011-04-23T14:05:31.983 に答える