The Search and Retrieve API provides a means for looking up content from an application based on search criteria including related content and returning the relevant fields for a specific use case. The application can be an iOS or Android mobile app, a web application or a web site requesting the content. The Search and Retrieve API can be used to search for any content, but it is especially useful for headless content because it allows for referenced content to be included and it also offers field filtering. It is very fast thanks to its use of the Apache Solr search engine and because it retrieves content via the XperienCentral cache. The search queries are concise and written either in JSON, which is usually used when querying from code, or in YAML which is easier to read and write when developing or testing queries.
...
In addition to the options to enable the Search and Retrieve API, the headless_search_retrieve
section on the General tab of the Setup Tool contains two configuration options:
max_items_in_result | Limits the total number of content items (pages and media items) returned in the response, regardless of those specified in the from and to parameters. (See Search Parameters for details on those parameters.) When the limit has been reached, no more references defined in the includes section will be "expanded". |
default_search_result_amount | The default number of results that are returned when no from and/or to parameters have been provided in the query. |
contentindex_index_readonly_nodes | When using the Search and Retrieve API on a clustered environment this setting should be turned on. When activating this on an existing environment the content index will need to be rebuild. To do so, manually remove the <webmanager-root>/work/contentindex directory and allow it to be regenerated after restarting XperienCentral. Selecting contentindex_queue_empty_reindex in the Setup Tool is not sufficient. |
...
Basic Usage
To send an HTTP POST request to https://yoursite.com/web/searchretrieve/v1/yaml, the search query would be:
...
The following are the currently supported parameters for querying the Search & Retrieve API.
Parameter | Description | YAML Example | JSON Example |
---|---|---|---|
ids | Search for a content item using the item's content ID. Note that this is not the content item version ID. When searching for a page, the ID must be prefixed with a "P" and when searching for a media item, the ID should be prefixed with an "M". For example, searching for a page would with the content ID 26111, you would use P26111 and searching for a media with the content ID of 1, you would use M1. This parameter can be used together with the | search: | { |
languages | This parameter specifies the language you want the results to be returned in. This parameter supports both the short country code metatag value (ISO-639) as well as the full metatag value (ISO-639 and ISO-3166 separated by an underscore "_"). When the full metatag value is provided, only the country code will be used due to a limitation within the content index. The languages parameter can be used in combination with both ID-based queries and parameterized queries. If this parameter is omitted, the active version for each available language will be returned. If there is no active version available, no version will be returned. | search: | { |
text | This parameter searches for any text in the title or the body of the documents in the content index. | search: | { |
keywords (simple configuration) | The simple configuration for the keywords parameter makes it possible to search for content containing a specific keyword. When searching for multiple keywords or for results excluding certain keywords, use the advanced configuration (below). | search: | { |
keywords (advanced configuration) | Allows more complex querying for articles with or without certain keywords. The and , not and or parameters which support lists of keywords should be used in the respective query fields. Values should always be provided in a list (YAML) or array (JSON) format. | search: | { |
types | Allows filtering on specific content types. The following parameters are allowed:
| search: | { |
keywordCategories | Adds a list of term categories to the query. The result has to contain at least one term that is in one of the provided categories. | search: | { |
sortBy | Specifies which field should be used to sort the results. The following options are supported:
| search: | { |
sortOrder | Can be either desc (default) or asc . | search: | { |
publicationDate | Supports filtering the results by publication date. A When using Javascript it's really easy to retrieve an ISO string for a Date object. The Date object has a function toISOString() that will return a proper ISO String, using UTC as the timezone. The provided time on the creation of the Date object is converted accordingly. | search: | { |
<custom fields> (simple configuration) | Custom fields can be used to query fields that are not explicitly exposed via the Search and Retrieve API. Examples of these are fields that are added to the content index via annotating methods in custom media items or fields in a Modular Content template that are configured to be indexed. The Modular Content fields Fields in a Modular Content Template can be configured to be indexed in the content index automatically. The identifiers that should be used to query for these fields depend on the exact configuration of that field. In all cases, the identifier should be prefixed with
When the Search Index value is set to "Combined ...", the template identifier can be omitted as follows: Modular date fields If a Modular Content item has a field of type Date it is possible to search for those content items using a date range, similar to searching for an item's publication date. Please refer to the publicationDate parameter for more information. Searching for a date range can not be combined with other parameters within the same field. Discovering and Debugging Fields in the Content Index The Solr Maintenance Reusable allows the user to discover which fields are available within the content index. When this plugin is installed, your role requires the "Developer options" permission for the Solr Maintenance panel in the Authorization panel. Open the Solr Maintenance panel and navigate to Developer Options > Explore the content index to explore the content index. Set the radio button "Show all facet info" to "yes" to show a list of all available facets per result. Combining Multiple Custom Fields It's possible to query for multiple custom fields at the same time by combining both simple and advanced query parameters, as well as "regular" and Modular Content Fields. | search: | { { |
<custom fields> (advanced configuration) | Allows more complex querying for articles with fields (not) containing or one more specific values. Supports the and , not and or parameters, which in turn support lists of values which should be used in the respective query fields. Values should always be provided in a list (YAML) or array (JSON) format. | search: | { |
from | Allows the selection of a subset of the results starting at the value of this parameter. The first result in a result set has an index of 1, therefore the from parameter should always be 1 or higher. Also note that this parameter is inclusive, meaning that if from is 3, for example, the result set will begin with the third result. When from is omitted, the index value 1 is used. | search: | { |
to | Allows the selection of a subset of the results ending at the value of this parameter. Like the from parameter, to is inclusive, meaning that when it is set to 1, only the first result will be returned. For example, if from is set to 3 and to is set to 5, the results 3, 4 and 5 will be returned. The minimum value for this parameter is 1. When to is omitted, a maximum number of 100 results will be returned starting at the from parameter (if specified), otherwise starting from index value 1. | search: | { |
...
Anchor | ||||
---|---|---|---|---|
|
...