Usare le api REST di seach di SharePoint 2013
SharePoint 2013 mette a disposizione le nuove api REST per interrogare il motore di ricerca.
Un esempio di url di chiamata è la seguente:
nel parametro querytext si possono usare alcune keyword per limitare la ricerca come ad esempio path: per indicare una url di partenza o (contentclass:STS_ListItem OR IsDocument:True) per restringere la ricerca ai soli item o file.
Ad esempio:
Un esempio in javascript per interrogare il motore di ricerca e gestire il risultato ritornato in JSON:
Molto importante è specificare nell'header { "accept": "application/json; odata=verbose" }
Un esempio di url di chiamata è la seguente:
Text
http://sharepoint.sgart.local/site1/_api/search/query?querytext=testo+da+cercare
Ad esempio:
testo da cercare path:http://sharepoint.sgart.local/site1/Lists/Requests (contentclass:STS_ListItem OR IsDocument:True)
Un esempio in javascript per interrogare il motore di ricerca e gestire il risultato ritornato in JSON:
JavaScript
//la query con il testo da cercare su una specifica lista o document library e ritornare solo gli item o i documenti, non i folder
var k = "prova testo path:" + _spPageContextInfo.webAbsoluteUrl + "/Lists/MiaLista (contentclass:STS_ListItem OR IsDocument:True)";
//la url ai servizi rest
var searchRestSource = _spPageContextInfo.webAbsoluteUrl
+ "/_api/search/query?querytext='" + query + hdExecuteSearchVM.queryScope() + "'"
+ "&rowlimit=" + numberOfResults
+ "&selectproperties='Title,Url'";
//uso jquery per interrogare le api
$.ajax({
url: searchRestSource,
method: "GET",
headers: { "accept": "application/json; odata=verbose" },
success: function (data) {
if (data.d.query.PrimaryQueryResult.RelevantResults.RowCount > 0) {
var queryResults = data.d.query.PrimaryQueryResult.RelevantResults.Table.Rows.results;
var r = "";
for (var i = 0; i < queryResults.length; i++) {
var title = "?";
var url = "";
for (var h = 0; h < queryResults[i].Cells.results.length; h++) {
//ciclo sui campi ritornati per cercare il Title e la Url
var obj = queryResults[i].Cells.results[h];
if (obj.Key == "Title") title = obj.Value;
if (obj.Key == "Url") url = obj.Value;
}
// gestire i valori ritornati
// addItem(title, url);
r += title + " | ";
}
alert(r);
}
},
error: function (err) {
// gestire gli errori
alert(JSON.stringify(err));
},
});