2014-10-28 11 views
1

SharePoint 검색 REST API를 사용하는 동안 다음과 같은 문제가 발생했습니다. rowlimit 값을 사용하면 totalrows 속성이 달라집니다. 예를 들어, 요청 :다른 RowLimit 매개 변수 (SharePoint 2013 Search REST 및 CSOM Api)를 적용하는 동안 TotalRows 속성이 다른 결과를 표시합니다.

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

내가 응답 다음있어이 요청 http://my-site/_api/search/query?querytext='test'&rowlimit=5으로,

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

한편을 나는 이것을 획득 :

<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 
} 

왜 이런 일이 발생하며 어떻게이 문제를 해결할 수 있습니까?

답변

3

비슷한 질문 this link를 참조하십시오

검색 결과를 반환되는 카운트 정확한 수 없습니다. 그것이 "약 410 개의 결과"라고하는 이유입니다. 페이지를 변경할 때마다 쿼리가 실행되고 SharePoint는 쿼리가 변경되지 않은 경우에도 검색된 결과 수를 다시 추측합니다.

또한 ResultTable.IsTotalRowsExact 속성이있는 이유는 TotalRows가 반환되는 결과의 정확한 수인 경우 true가됩니다.