SharePoint 2013 Search REST API
In this post I'll go through the details of the SharePoint 2013 Search REST API. This new REST service is the best way to go in a variety of application scenarious. SharePoint Apps built in JavaScript is one good example. External Applications to SharePoint that require search functionality; can also leverage this service as the endpoint for communication into the Search platform.
The old search.asmx SOAP web service is marked as deprecated in SP2013, and the new Search REST service is the replacement.
Location of the Search Rest service
The Search REST service is located at the following URI: https://host/site/_api/search
The Search REST API
The Search REST service exposed by the URI specified above provides the following methods or entry points:
query |
Supports HTTP Get and is used to retrieve search results. |
|
postquery |
Supports HTTP POST and is used to retrieve search results. This method can be used to overcome URI length restrictions when using the HTTP GET based method "query". |
|
suggest |
Supports HTTP GET and is used to retrieve query suggestions. |
Query Parameters
The following table lists the query parameters available for the query entry point:
Name |
Description |
Type |
Default |
querytext |
The text of the search query. |
String - Maximum query text length allowed by the Keyword Query OM is 4096 characters. |
Empty |
https://host/site/_api/search/query?querytext='search is cool' | |||
querytemplate |
The query template text. |
String |
Empty |
enableinterleaving |
Specifies if the result sets which are generated by executing query rule actions to add result block should be mixed with the result set for the original query. |
bool |
True |
https://host/site/_api/search/query?querytext='terms'&enableinterleaving=false | |||
sourceid |
Specifies the unique identifier of the Result Source to use for executing the search query. |
String |
Empty |
https://host/site/_api/search/query?querytext='term'&sourceid='8413cd39-2156-4e00-b54d-11efd9abdb89' | |||
rankingmodelid |
The GUID of the Rank Model to be used for this search query. |
String |
Empty |
startrow |
A zero-based index of the first search result to be returned. |
Integer [ >= 0] |
0 |
https://host/site/_api/search/query?querytext='terms'&startrow=11 | |||
rowlimit |
The maximum number of search results to be returned, starting at the index specified in startrow. |
Integer [ >= 0] |
10 |
https://host/site/_api/search/query?querytext='terms'&startrow=11&rowlimit=3 | |||
rowsperpage |
The number of results to return per page. |
Integer [ >= 0] |
0 |
selectproperties |
Specifies the list of managed properties to return for each search result item. For a managed property to be returned; the Retrievable flag must be set to "true" in the Search Schema. |
String |
Empty |
https://host/site/_api/search/query?querytext='terms'&selectproperties='Path,Url,Title,Author' | |||
culture |
Specifies the identifier of the language culture of the search query. If present, the value must be a valid LCID of a culture name. A list of LCIDs is available here. |
Integer |
-1 |
https://host/site/_api/search/query?querytext='terms'&culture=1044 | |||
refiners |
Specifies a list of refiners to return as a comma-separated list of strings. |
String |
Empty |
https://host/site/_api/search/query?querytext='terms'&refiners='companies,contentclass,ContentType,FileExtension,FileType' | |||
refinementfilters |
The list of refinement tokens for drilldown into search results. Refinement tokens are returned as part of the RefinementResults table for the search query. |
String |
Empty |
https://host/site/_api/search/query?querytext='sharepoint'&refiners='filetype'&refinementfilters='filetype:equals("pptx")' | |||
hiddenconstraints |
Specifies additional query terms that will be appended to the query. |
String |
Empty |
https://host/site/_api/search/query?querytext='terms'&hiddenconstraints='powerpoint' | |||
sortlist |
Specifies the list of properties to sort the search results by. |
String |
Empty |
https://host/site/_api/search/query?querytext='terms'&sortlist='rank:ascending' | |||
enablestemming |
Specifies whether stemming is enabled for the query. |
bool |
True |
https://host/site/_api/search/query?querytext='terms'&enablestemming=false | |||
trimduplicates |
Specifies whether duplicate items should be removed from search results. This property can also be used to collapse hits in the result set. |
bool |
True |
https://host/site/_api/search/query?querytext='terms'&trimduplicates=false | |||
trimduplicatesincludeid |
Specifies the value associated with a collapse group, typically used when a user clicks the duplicates link of an item with duplicates. |
long |
0L |
https://host/site/_api/search/query?querytext='terms'&trimduplicates=true&trimduplicatesincludeid=47 | |||
timeout |
Specifies the amount of time, in milliseconds, before the query request times out. |
Integer |
30000 |
https://host/site/_api/search/query?querytext='terms'&timeout=50000 | |||
enablenicknames |
Specifies whether the exact terms in the search query are used to find matches, or if nicknames are used as well. |
bool |
False |
https://host/site/_api/search/query?querytext='terms'&enablenicknames=true | |||
enablephonetic |
Specifies whether the phonetic forms of the query terms are used to find matches. |
bool |
False |
https://host/site/_api/search/query?querytext='terms'&enablephonetic=true | |||
enablefql |
Specifies whether the query string is according to the FAST Query Language (FQL) syntax. |
Bool |
False |
https://host/site/_api/search/query?querytext='terms'&enablefql=true | |||
hithighlightedproperties |
Specifies the list of properties to include in the HitHighlightedProperties for each result item. |
String |
Empty |
https://host/site/_api/search/query?querytext='terms'&hithighlightedproperties='Title,Author' | |||
bypassresulttypes |
Specifies if the search result item type should be returned for the query results. |
bool |
False |
processbestbets |
Specifies if the search promoted results should be returned, if available, as a result set. |
bool |
True |
clienttype |
Name of a client which issued query. |
String |
Empty |
personalizationdata |
Gets or sets the unique identifier (GUID) for the current user who submitted the search query. |
String |
Empty |
resultsurl |
Specifies the URL for the page where the search results are going to be displayed. |
String |
Empty |
querytag |
Any custom tags to be used to identify the query. Multiple tags are separated by semicolons. |
String |
Empty |
enablequeryrules |
Specifies if Query Rules are turned on for this query. |
bool |
True |
https://host/site/_api/search/query?querytext='terms'&enablequeryrules=false | |||
enablesorting |
Indicates whether results should be sorted. |
bool |
True |
https://host/site/_api/search/query?querytext='terms'&enablesorting=false |
Suggest Parameters
The following table lists the query parameters available from the suggest entry point:
Name |
Description |
Type |
Default |
querytext |
The text of the search query. |
String |
Empty |
https://host/site/_api/search/suggest?querytext='nad' | |||
inumberofquerysuggestions |
The number of query suggestions to retrieve. |
Integer [ > 0] |
5 |
https://host/site/_api/search/suggest?querytext='nad'&inumberofquerysuggestions=6 | |||
inumberofresultsuggestions |
The number of personal results to retrieve. |
Integer [ > 0] |
5 |
https://host/site/_api/search/suggest?querytext='nad'&inumberofresultsuggestions=6 | |||
fprequerysuggestions |
Specifies whether to retrieve pre-query suggestions or post-query suggestions. |
bool |
False |
https://host/site/_api/search/suggest?querytext='nad'&fprequerysuggestions=true | |||
fhithighlighting |
Specifies whether the query suggestions should be highlighted. If "true", the terms in the returned query suggestions that match terms in the specified query are surrounded with <B> and </B> HTML tags. |
bool |
True |
https://host/site/_api/search/suggest?querytext='nad'&fhithighlighting=true | |||
fcapitalizefirstletters |
Specifies whether to capitalize first letters in each term in query suggestions. |
bool |
False |
https://host/site/_api/search/suggest?querytext='nad'&fcapitalizefirstletters=true | |||
showpeoplenamesuggestions |
Specifies if people names should be included in query suggestions. |
bool |
False |
https://host/site/_api/search/suggest?querytext='nad'&showpeoplenamesuggestions=true | |||
culture |
Specifies the identifier of the language culture of the search query. If present, the value must be a valid LCID of a culture name. A nice list of LCIDs is available here. |
Integer |
-1 |
https://host/site/_api/search/suggest?querytext='nad'&culture=1044 |
References:
- [MS-SRCHCSOM]: Search Client Query Protocol Specification
- Search in SharePoint 2013 on MSDN
- Microsoft.Office.Server.Search.DLL - Reflector is your best friend :).
Comments
Anonymous
October 08, 2012
The comment has been removedAnonymous
October 09, 2012
Thanks, Nadeem, for sharing this! Great help!Anonymous
November 19, 2012
Am I missing something? Why is there no scope parameter?Anonymous
December 06, 2012
Scopes have essentially been replaced by result sources, referenced by the sourceid parameterAnonymous
January 18, 2013
Is it possible to filter the search within a specific path (a fileshare or a website)? If so, what is the param? ThanksAnonymous
January 20, 2014
you can filter it by using FQL.
- Set the Query Parameter of 'enablefql' to true.
- Submit FQL to filter the Query Result based on any managed property. ex. url:starts-with("<<URL>>") Ref:- msdn.microsoft.com/.../ff394606.aspx
- Anonymous
October 22, 2015
Nice article