Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você tiver um grande número de resultados de pesquisa (por exemplo, mais de 50,000) para percorrer as páginas de uma consulta, é recomendável utilizar a abordagem explicada neste artigo em vez da abordagem de StartRow. Essa abordagem utiliza a classificação em [docid] ordem crescente e utiliza uma restrição de consulta no valor IndexDocId com um valor crescente de IndexDocID para cada nova página.
As vantagens desta abordagem são:
- Ela fornece uma paginação com melhor desempenho
- Ela não limita o número de páginas (se você utilizar a abordagem de StartRow e o valor de
StartRowfor maior que 50,000, há o risco de ser restringido pelo SharePoint)
Aqui está um exemplo de como utilizar essa abordagem:
Para a página 1, emita uma consulta com classificação em [docid] em ordem crescente:
GET http://{site_url}/_api/search/query?querytext='sharepoint'&sortlist='[docid]:ascending'
O resultado desta consulta deve conter o seguinte conteúdo:
...
<d:element m:type="SP.SimpleDataRow">
<d:Cells>
...
<d:element m:type="SP.KeyValue">
<d:Key>DocId</d:Key>
<d:Value>10</d:Value>
<d:ValueType>Edm.Int64</d:ValueType>
</d:element>
...
Obtenha o valor DocId da última entrada no resultado. Você deve conseguir encontrar DocId em SP.SimpleDataRow. Digamos que o DocId valor seja 10. Você usará isso como a DocID restrição para a página 2:
Para a página 2, utilize a seguinte consulta, em que você precisa continuar utilizando a lista de classificação em DocId em ordem crescente, mas também adicionar uma restrição de IndexDocId:
GET http://{site_url}/_api/search/query?querytext='sharepoint indexdocid>10'&sortlist='[docid]:ascending'
Digamos que o valor DocId da última entrada no resultado seja 20.
Para a página 3, continue a consulta com o mesmo padrão da página anterior:
GET http://{site_url}/_api/search/query?querytext='sharepoint indexdocid>20'&sortlist='[docid]:ascending'
E assim por diante para o resto das páginas.
Para usar a mesma abordagem no CSOM, consulte o seguinte exemplo:
...
if (startRow == 0) // When issueing the query for first time, we don't have a DocId value yet
keywordQuery.QueryText = "sharepoint";
else // Putting the IndexDocId first and then the 'actual' query matters (in this case searching for the keyword 'sharepoint')
keywordQuery.QueryText = string.Format("IndexDocId>{0} AND (sharepoint)", startRow);
keywordQuery.EnableSorting = true;
keywordQuery.SortList.Add("[DocId]", Microsoft.SharePoint.Client.Search.Query.SortDirection.Ascending);
...
Observação
Ao usar a SortList em consultas de pesquisa, o nome do campo usado deve ser colocado entre colchetes (por exemplo, [DocId]).