programming language or toolkit.
</para>
- <note>
- <para>
- A recent addition to &yaz; is SRU support. You can now make
- SRU ZOOM connections by specifying scheme <literal>http://</literal>
- for the hostname for a connection. The dialect of SRU used is
- specified by the value of the connection's <literal>sru</literal>
- option, which may be SRU over HTTP GET (<literal>get</literal>),
- SRU over HTTP POST (<literal>post</literal>) or SRW (SRU over
- SOAP) (<literal>soap</literal>). Using the facility for embedding
- options in target strings, a connection can be forced to use SRU
- rather the SRW (the default) by prefixing the target string with
- <literal>sru=get,</literal>, like this:
+ <para>
+ From YAZ version 2.1.12, <ulink url="&url.sru;">SRU</ulink> is supported.
+ You can make SRU ZOOM connections by specifying scheme
+ <literal>http://</literal> for the hostname for a connection.
+ The dialect of SRU used is specified by the value of the
+ connection's <literal>sru</literal> option, which may be SRU over
+ HTTP GET (<literal>get</literal>),
+ SRU over HTTP POST (<literal>post</literal>), (SRU over
+ SOAP) (<literal>soap</literal>) or <literal>SOLR</literal>
+ (<ulink url="&url.solr;">SOLR</ulink> Web Service).
+ Using the facility for embedding options in target strings, a
+ connection can be forced to use SRU rather the SRW (the default) by
+ prefixing the target string with <literal>sru=get,</literal>, like this:
<literal>sru=get,http://sru.miketaylor.org.uk:80/sru.pl</literal>
</para>
- </note>
-
+
<para>
The lack of a simple Z39.50 client API for &yaz; has become more
and more apparent over time. So when the first &zoom; specification
<row><entry>
sru</entry><entry>
SRU transport type. Must be either <literal>soap</literal>,
- <literal>get</literal> or <literal>post</literal>.
+ <literal>get</literal>, <literal>post</literal>, or
+ <literal>solr</literal>.
</entry><entry>soap</entry></row>
<row><entry>
sru_version</entry><entry>
</entry><entry>1.2</entry></row>
<row><entry>
facets</entry><entry>
- A FacetList is comma-separated list of facet, which is defined as <literal>AttributeList</literal>
- and a optional FacetTerm (a Term and a frequency). On request the terms is missing.
- On response the the list contains the terms that the target could collect.
+ A FacetList is comma-separated list of facet, which is defined
+ as <literal>AttributeList</literal> and a optional FacetTerm
+ (a Term and a frequency). On request the terms is missing.
+ On response the the list contains the terms that the target
+ could collect.
</entry><entry>none</entry></row>
</tbody>
</tgroup>
</para>
</sect2>
</sect1>
+ <sect1 id="zoom.facets"><title>Facets</title>
+ <para>
+ In case the target can and is requested to return facets, using a result set the ZOOM client
+ can request one or all facet fields. Using a facet field the client can request the term count and
+ then interate over the terms.
+ </para>
+ <synopsis>
+ ZOOM_facet_field *ZOOM_resultset_facets(ZOOM_resultset r);
+ const char ** ZOOM_resultset_facets_names(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);
+ size_t ZOOM_resultset_facets_size(ZOOM_resultset r);
+
+ 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);
+ </synopsis>
+ <para>
+ References to temporary structures are returned by all functions. They are only valid as long the Result set is valid.
+ <function>ZOOM_resultset_get_facet_field</function> or
+ <function>ZOOM_resultset_get_facet_field_by_index</function>.
+ <function>ZOOM_resultset_facets</function>.
+ <function>ZOOM_resultset_facets_names</function>.
+ <function>ZOOM_facet_field_name</function>.
+ <function>ZOOM_facet_field_get_term</function>.
+ </para>
+ <para id="zoom.resultset.get_facet_field">
+ A single Facet field is returned by function
+ <function>ZOOM_resultset_get_facet_field</function> or <function>ZOOM_resultset_get_facet_field_by_index</function> that takes a
+ result set and facet name or positive index respectively. First facet has position zero.
+ If no facet could be obtained (invalid name or index out of bounds) <literal>NULL</literal> is returned.
+ </para>
+ <para id="zoom.resultset.facets">
+ An array of facets field can be returned by <function>ZOOM_resultset_facets</function>. The length of the array is
+ given by <function>ZOOM_resultset_facets_size</function>. The array is zero-based and last entry will be at
+ <function>ZOOM_resultset_facets_size(result_set)</function>-1.
+ </para>
+ <para id="zoom.resultset.facets_names">
+ It is possible to interate over facets by name, by calling <function>ZOOM_resultset_facets_names</function>.
+ This will return an const array of char * where each string can be used as parameter for
+ <function>ZOOM_resultset_get_facet_field</function>.
+ </para>
+ <para>
+ Function <function>ZOOM_facet_field_name</function> gets the request facet name from a returned facet field.
+ </para>
+ <para>
+ Function <function>ZOOM_facet_field_get_term</function> returns the idx'th term and term count for a facet field.
+ Idx must between 0 and <function>ZOOM_facet_field_term_count</function>-1, otherwise the returned reference will be
+ <literal>NULL</literal>. On a valid idx, the value of the freq reference will be the term count.
+ The *freq parameter must be valid pointer to integer.
+ </para>
+ </sect1>
<sect1 id="zoom.scan"><title>Scan</title>
<para>
This section describes an interface for Scan. Scan is not an