Facets are only supported for a few Z39.50 targets. It is a relatively new non-standard Z39.50 extension (see facets.asn in the YAZ source). However, facets are usually supported for Solr and SRU 2.0 targets.
Facets may be specified by the facets option before a search is sent. See Section 8, “Facets” for the notation. For inspection of the returned facets, the following functions are available:
ZOOM_facet_field *ZOOM_resultset_facets(ZOOM_resultset r); size_t ZOOM_resultset_facets_size(ZOOM_resultset r); ZOOM_facet_field ZOOM_resultset_get_facet_field(ZOOM_resultset r, const char *facet_name); ZOOM_facet_field ZOOM_resultset_get_facet_field_by_index(ZOOM_resultset r, int pos); const char *ZOOM_facet_field_name(ZOOM_facet_field facet_field); size_t ZOOM_facet_field_term_count(ZOOM_facet_field facet_field); const char *ZOOM_facet_field_get_term(ZOOM_facet_field facet_field, size_t idx, int *freq);
References to temporary structures are returned by all functions. They are only valid as long the Result set is valid.
All facet fields may be returned by a call to
ZOOM_resultset_facets
. The length of the array is
given by ZOOM_resultset_facets_size
. The array is
zero-based and the last entry will be at
ZOOM_resultset_facets_size(result_set)
-1.
Facet fields can also be fetched via its name using
ZOOM_resultset_get_facet_field
.
Or by its index (starting from 0) by a call to
ZOOM_resultset_get_facet_field_by_index
.
Both of these functions return NULL if name is not found or index is
out of bounds.
Function ZOOM_facet_field_name
gets the request
facet name from a returned facet field.
Function ZOOM_facet_field_get_term
returns the
idx'th term and term count for a facet field.
Idx must between 0 and
ZOOM_facet_field_term_count
-1, otherwise the
returned reference will be NULL
. On a valid idx, the
value of the freq reference will be the term count.
The freq
parameter must be valid pointer to integer.