0

私は非常に私を悩ませているこの検索コードを持っています.

if(webSafeCursor != null && !webSafeCursor.isEmpty()){
    Cursor cursor = Cursor.newBuilder().build(webSafeCursor);
    QueryOptions options = QueryOptions.newBuilder()
                           .setLimit(10)
                           .setFieldsToSnippet("content")
                           .setCursor(cursor)
                           .build();
    query = Query.newBuilder()
            .setOptions(options)
            .build(queryString);
    }

    Results<ScoredDocument> results = null;

    if(query != null){
        results = index.search(query);
    } else {
               results = index.search(queryString);
           }
    results.getCursor(); // NULL!
}

ここでの問題は、制限が 10 であるresultsことは明らかであるのに対し、返品されるのは 20 アイテムであることです。QueryOptions

このコードで何が間違っている可能性がありますか?

もう 1 つのことは、クエリの結果が Cursor を発行しないことですが、クエリが 20 を超えるアイテムを返す必要があり、Cursor を返す必要があることは (手動で確認することによって) 明らかですか? それともこれは正しい動作ですか?

4

1 に答える 1

2

あなたのコードからわかる限り、あなたの queryOptions は、空でないカーソルを渡した場合にのみ使用されます。そのため、まだカーソルを持っていない場合は、カーソルを取得することもできません。後に右中括弧を追加します

Cursor cursor = Cursor.newBuilder().build(webSafeCursor);

そして、あなたが望む動作が得られると思います(もちろん、他の場所でブレースのバランスを取った後)。

于 2015-01-31T18:45:17.760 に答える