Свойство 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 - это точное количество возвращаемых результатов.