Search result caching

Saved searches

When searching using the PUT method, the query parameter save=true can be used save the query and request parameters for later retrieval. This can be used to improve performance for queries that are performed frequently, as the saved search endpoint supports conditional GET using ETag.

The response will then have status 303 See Other and Location header, from where the search result can be fetched. The URI from the Location header supports the ETag and If-None-Match headers for GET requests. GET requests to the location URI without the If-None-Match header with return the search result with it’s ETag, or 404 if the saved search has been invalidated and removed.

For item or collection search, the saved search will be invalidated and removed if any entity of that type is re-indexed.

The ETags returned from saved search requests are weak ETags; meaning that the “Content-Type” headers and query parameters won’t affect the value of the ETag.

Example

An item search request is first made using save=true:

PUT API/item?save=true
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<ItemSearchDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <text>squirrel</text>
</ItemSearchDocument>
NONE
HTTP/1.1 303 See Other
Location: http://localhost:8080/API/item/saved/f8297c9d02083d66731b4438415fd26b?type=ITEM
NONE

Then, to fetch the query results:

GET http://localhost:8080/API/item/saved/f8297c9d02083d66731b4438415fd26b?type=ITEM
NONE
HTTP/1.1 200 OK
Content-Type: application/xml
ETag: W/"50521d364314765d9f672279375939b8"

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ItemListDocument xmlns="http://xml.vidispine.com/schema/vidispine">
  <hits>1</hits>
  <item id="VX-26424" start="-INF" end="+INF">
    <timespan start="-INF" end="+INF"/>
  </item>
</ItemListDocument>
NONE

After that, the ETag can be used to perform a conditional GET:

GET http://localhost:8080/API/item/saved/f8297c9d02083d66731b4438415fd26b?type=ITEM
If-None-Match: W/"50521d364314765d9f672279375939b8"
NONE
HTTP/1.1 304 Not Modified
NONE