Свойство TotalRows показывает разные результаты при применении разных параметров RowLimit (SharePoint 2013 Search REST и CSOM Api)

При использовании 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
} 

Почему так происходит и как я могу решить эту проблему?

1 ответ

Смотрите эту ссылку с похожим вопросом:

Количество, возвращаемое для результатов поиска, не является точным. Вот почему написано "О 410 результатах". Каждый раз, когда вы меняете страницы, выполняется запрос, и SharePoint делает еще одно предположение о том, сколько результатов найдено, даже если запрос не изменился.

Вот почему ResultTable.IsTotalRowsExact свойство, которое будет истинным, если TotalRows - это точное количество возвращаемых результатов.

Другие вопросы по тегам