2

SharePoint Search REST Api を使用しているときに、次の問題が発生しました。異なるrowlimit値を使用すると、totalrowsプロパティの値が変化します。たとえば、次のようなリクエストの場合:

http://my-site/_api/search/query?querytext='test'&rowlimit=10

私は次の応答を得ました:

<d:RowCount m:type="Edm.Int32">10</d:RowCount>
<d:Table m:type="SP.SimpleDataTable"></d:Table>
<d:TotalRows m:type="Edm.Int32">22</d:TotalRows>

一方、このリクエストhttp://my-site/_api/search/query?querytext='test'&rowlimit=5で私はこれを取得します:

<d:RowCount m:type="Edm.Int32">5</d:RowCount>
<d:Table m:type="SP.SimpleDataTable"></d:Table>
<d:TotalRows m:type="Edm.Int32">28</d:TotalRows>

CSOM Api で確認したところ、REST と同じ値が返されました。

using (var clientContext = new ClientContext(_url))
{
    var keywordQuery = new KeywordQuery(clientContext)
    {
        QueryText = "test",
        RowLimit = 10 //and then 5
    };
    var searchExecutor = new SearchExecutor(clientContext);
    var results = searchExecutor.ExecuteQuery(keywordQuery);
    clientContext.ExecuteQuery();

    Console.WriteLine("total rows: {0}", results.Value[0].TotalRows); // 22 and then 28
} 

なぜそうなるのか、どうすればこの問題を解決できますか?

4

1 に答える 1

4

同様の質問でこのリンクを参照してください:

検索結果で返される数は正確な数ではありません。そのため、「約 410 件の結果」と表示されています。ページを変更するたびにクエリが実行され、クエリが変更されていない場合でも、SharePoint は見つかった結果の数をもう一度推測します。

そのためResultTable.IsTotalRowsExact、TotalRows が返された結果の正確な数である場合に true になるプロパティがあります。

于 2014-10-28T23:03:56.027 に答える