2. Queries
Prev | Chapter 3. ZOOM | Next

## 2. Queries

Query objects represents queries.

         ZOOM_query ZOOM_query_create(void);

         void ZOOM_query_destroy(ZOOM_query q);

         int ZOOM_query_prefix(ZOOM_query q, const char *str);

         int ZOOM_query_cql(ZOOM_query s, const char *str);

         int ZOOM_query_sortby(ZOOM_query q, const char *criteria);

         int ZOOM_query_sortby2(ZOOM_query q, const char *strategy,
                                const char *criteria);

Create query objects using `ZOOM_query_create` and destroy them by calling `ZOOM_query_destroy`. RPN-queries can be specified in PQF notation by using the function `ZOOM_query_prefix`. The `ZOOM_query_cql` specifies a CQL query to be sent to the server/target. More query types will be added in future versions of YAZ, such as CCL to RPN-mapping, native CCL query, etc. In addition to a search, a sort criteria may be set. Function `ZOOM_query_sortby` enables Z39.50 sorting and it takes sort criteria using the same string notation as yaz-client's sort command.

`ZOOM_query_sortby2` is similar to `ZOOM_query_sortby` but allows a strategy for sorting. The reason for the strategy parameter is that some protocols offers multiple ways of performing sorting. For example, Z39.50 has the standard sort, which is performed after search on an existing result set. It's also possible to use CQL in Z39.50 as the query type and use CQL's SORTBY keyword. Finally, Index Data's Zebra server also allows sorting to be specified as part of RPN (Type 7).

Table 3.2. ZOOM sort strategy

Name | Description
--- | ---
z39.50 | Z39.50 resultset sort
type7 | Sorting embedded in RPN(Type-7)
cql | CQL SORTBY
sru11 | SRU sortKeys parameter
solr | Solr sort
embed | type7 for Z39.50, cql for SRU, solr for Solr protocol

Prev | Up | Next
Chapter 3. ZOOM | Home | 3. Result sets