Mention snippets
[pazpar2-moved-to-github.git] / doc / pazpar2_protocol.xml
index 47314ac..b7e8245 100644 (file)
@@ -37,7 +37,7 @@
    This way, a regular webserver can host the user interface (itself dynamic
    or static HTML), and Ajax-style calls can be used from JS (or any other
    client-based scripting environment) to interact with the search logic
-   in Pazpar2. 
+   in Pazpar2.
   </para>
   <para>
    Each command is described in sub sections to follow.
     Initializes a session.
     Returns session ID to be used in subsequent requests. If
     a server ID is given in the Pazpar2 server section, then a
-    period (.) and the server ID is appended to the session ID.
+    that is included in the session ID as suffix after a period (.).
+   </para>
+   <para>
+    If the init command is performed as a HTTP GET request, service
+    and settings from local files are used. The service parameter
+    may chose a particular local service.
+   </para>
+   <para>
+    If the init command is performed as a HTTP POST request and
+    the content-type is text/xml, then the content is XML parsed
+    and treated as service for the session. The root element should be
+    service. Refer to descripton of the
+    <link linkend="service_conf">service</link> format.
+    The posting of a service appeared in Pazpar2 version 1.2.1.
    </para>
    <para>
     Example:
     The settings command applies session-specific settings to one or more
     databases. A typical function of this is to enable access to
     restricted resources for registered users, or to set a user- or
-    library-specific username/password to use against a target. Each
-    setting parameter has the form name[target]=value, where name is the
+    library-specific username/password to use against a target.
+   </para>
+   <para>
+    Each setting parameter has the form name[target]=value, where name is the
     name of the setting (e.g. pz:authentication), target is a target ID,
     or possibly a wildcard, and value is the desired value for the
     setting.
      the init command.
     </para>
    </note>
-   
+
+   <para>
+    If the settings command is performed as HTTP POST and the content-type
+    is text/xml, then the content is XML parsed and treated as settings -
+    with a format identical to local
+    <link linkend="target_settings">settings files</link>.
+    The posting of settings appeared in Pazpar version 1.2.1.
+   </para>
+
    <para>
     Example:
     <screen><![CDATA[
@@ -240,6 +263,72 @@ search.pz?command=settings&session=2044502273&pz:allow[search.com:210/db1]=1
        </para>
       </listitem>
      </varlistentry>
+     <varlistentry>
+      <term>sort</term>
+      <listitem>
+       <para>
+       Specifies sort criteria. The argument is a comma-separated list
+       (no whitespace allowed) of sort fields, with the highest-priority
+       field first. A sort field may be followed by a colon followed by
+       the number '0' (decreasing) or '1' (increasing).  Default
+        sort order is decreasing.
+       Sort field names can be any field name designated as a sort field
+        in the pazpar2.cfg file, or the special names 'relevance' and
+       'position'.
+       </para>
+       <para>
+       If not specified here or as <link linkend="sort-default">sort-default"</link>
+       in pazpar2.cfg, Pazpar2 will default to the built-in 'relevance' ranking. 
+       </para>
+       <para>
+       Having sort criteria at search is important for targets that 
+       supports native sorting in order to get best results. Pazpar2 
+       will trigger a new search if search criteria changes from Pazpar2 
+       to target-based sorting or visa-versa.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>mergekey</term>
+      <listitem>
+       <para>
+       Sets mergekey for this search and rest of session, or until
+       another mergekey is given for show/search. The mergekey value is a
+       comma separated list with one or more names as they appear
+       in the service description  equivalent to
+       <literal>mergekey="optional"</literal> inside a metadata element.
+       If the empty string is given for mergekey it is disabled
+       and rest of session will use the default mergekey from service
+       or stylesheet.
+       </para>
+       <para>
+       This facility, "dynamic mergekey", appeared in Pazpar2 version
+       1.6.31.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>rank</term>
+      <listitem>
+       <para>
+       Sets rank method this search and rest of session, or until
+       another rank is given for show/search. The rank value is a
+       comma separated list of pairs field=value pairs. The
+       format is the same as
+       <xref linkend="metadata-rank">rank</xref> for a metadata element.
+       If the empty string is given for rank it is disabled
+       and rest of session will use the default rank from metadata or
+       stylesheet.
+       </para>
+       <para>
+       This facility, "dynamic ranking", appeared in Pazpar2 version
+       1.6.31.
+       </para>
+      </listitem>
+     </varlistentry>
+
     </variablelist>
 
    </para>
@@ -348,21 +437,83 @@ search.pz2?session=2044502273&command=stat
        Specifies sort criteria. The argument is a comma-separated list
        (no whitespace allowed) of sort fields, with the highest-priority
        field first. A sort field may be followed by a colon followed by
-       the number '0' or '1', indicating whether results should be sorted in
-       increasing or decreasing order according to that field. 0==Decreasing is
-       the default.
+       the number '0' (decreasing) or '1' (increasing).  Default
+        sort order is decreasing.
        Sort field names can be any field name designated as a sort field
         in the pazpar2.cfg file, or the special names 'relevance' and
        'position'.
+
+       If not specified here or as <link linkend="sort-default">sort-default"</link> 
+       in pazpar2.cfg, pazpar2 will default to the built-in 'relevance' ranking. 
+
+       Having sort criteria at search is important for targets that 
+       supports native sorting in order to get best results. pazpar2 
+       will trigger a new search if search criteria changes from pazpar2 
+       to target-based sorting.
+
        </para>
        <para>
-       For targets where If <link linkend="pz:sortmap">pz:sortmap</link>
+       For targets where If <link linkend="pzsortmap">pz:sortmap</link>
        is defined, a sort operation will be executed (possibly including
        extending the search).
        </para>
       </listitem>
      </varlistentry>
-     
+
+     <varlistentry>
+      <term>mergekey</term>
+      <listitem>
+       <para>
+       Sets mergekey for this show and rest of session, or until
+       another mergekey is given for show/search. The mergekey value is a
+       comma separated list with one or more names as they appear
+       in the service description  equivalent to
+       <literal>mergekey="optional"</literal> inside a metadata element.
+       If the empty string is given for mergekey it is disabled
+       and rest of session will use the default mergekey from service
+       or stylesheet.
+       </para>
+       <para>
+       This facility, "dynamic mergekey", appeared in Pazpar2 version
+       1.6.31.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>rank</term>
+      <listitem>
+       <para>
+       Sets rank method this show and rest of session, or until
+       another rank is given for show/search. The rank value is a
+       comma separated list of pairs field=value pairs. The
+       format is the same as
+       <xref linkend="metadata-rank">rank</xref> for a metadata element.
+       If the empty string is given for rank it is disabled
+       and rest of session will use the default rank from metadata or
+       stylesheet.
+       </para>
+       <para>
+       This facility, "dynamic ranking", appeared in Pazpar2 version
+       1.6.31.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>snippets</term>
+      <listitem>
+       <para>
+       If specified and set to 1 data will include snippets marked
+       with &lt;match&gt; tags. Otherwise snippets will not be included.
+       </para>
+       <para>
+       This facility, "snippets", appeared in Pazpar2 version
+       1.6.32.
+       </para>
+      </listitem>
+     </varlistentry>
+
     </variablelist>
    </para>
    <para>
@@ -428,15 +579,16 @@ search.pz2?session=2044502273&command=show&start=0&num=2&sort=title:1
       <listitem>
        <para>
        This optional parameter is an integer which, when given, makes
-       Pazpar2 return the raw record for a target. The raw record
-       from first target is numbered 0, second numbered 1, etc.
-       When a raw record is returned Pazpar2 will XSLT transform the
-       record but an XML version is returned. All ISO2709 records are
-       returned as MARCXML. OPAC records are returned as YAZ'
-       OPAC with an MARCXML sibling.
+       Pazpar2 return the original record for a specific target.
+       The record set from first target is numbered 0,
+       second record set is numbered 1, etc.
+       The nativesyntax setting, as usual, is used to determine how to
+       create XML from the original record - unless parameter
+       <literal>binary</literal> is given in which the record is
+       fetched as "raw" from ZOOM C (raw, original record).
        </para>
        <para>
-       When offset is not given the Pazpar2 metadata for the record
+       When offset/checksum is not given, the Pazpar2 metadata for the record
        is returned and with metadata for each targets' data specified
        in a 'location' list.
        </para>
@@ -444,6 +596,40 @@ search.pz2?session=2044502273&command=show&start=0&num=2&sort=title:1
      </varlistentry>
 
      <varlistentry>
+      <term>checksum</term>
+      <listitem>
+       <para>
+       This optional parameter is a string which, when given, makes
+       Pazpar2 return the original record for a specific target. The
+       checksum is returned as attribtue 'checksum' in element
+       'location' for show command and record command (when checksum
+       and offset is NOT given).
+       The nativesyntax setting, as usual, is used to determine how to
+       create XML from the original record - unless parameter
+       <literal>binary</literal> is given in which the record is
+       fetched as "raw" from ZOOM C (raw, original record).
+       </para>
+       <para>
+       When offset/checksum is not given, the Pazpar2 metadata for the record
+       is returned and with metadata for each targets' data specified
+       in a 'location' list.
+       </para>
+      </listitem>
+     </varlistentry>
+
+
+     <varlistentry>
+      <term>nativesyntax</term>
+      <listitem>
+       <para>
+       This optional parameter can be used to override pz:nativesyntax
+       as given for the target. This allow an alternative nativesyntax
+       to be used for original records (see parameteroffset above).
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
       <term>syntax</term>
       <listitem>
        <para>
@@ -471,9 +657,23 @@ search.pz2?session=2044502273&command=show&start=0&num=2&sort=title:1
       <listitem>
        <para>
        This optional parameter enables "binary" response for retrieval
-       of a raw record (i.e. when offset is specified). For binary
-       responses the record is <emphasis>not</emphasis> converted to
-       XML and the HTTP content type is application/octet-stream.
+       of a original record (i.e. when offset is specified). For binary
+       response the record by default is fetched from ZOOM C using
+       the "raw" option or by parameter nativesyntax if given.
+       </para>
+      </listitem>
+     </varlistentry>
+
+     <varlistentry>
+      <term>snippets</term>
+      <listitem>
+       <para>
+       If specified and set to 1 data will include snippets marked
+       with &lt;match&gt; tags. Otherwise snippets will not be included.
+       </para>
+       <para>
+       This facility, "snippets", appeared in Pazpar2 version
+       1.6.32.
        </para>
       </listitem>
      </varlistentry>
@@ -630,6 +830,25 @@ search.pz2?session=605047297&command=bytarget&id=3
    </para>
   </refsect2>
 
+  <refsect2 id="command-service">
+   <title>service</title>
+   <para>
+    Returns service definition (XML). Parameters:
+    <variablelist>
+     <varlistentry>
+      <term>session</term>
+      <listitem>
+       <para>
+       Session ID
+       </para>
+      </listitem>
+     </varlistentry>
+    </variablelist>
+   </para>
+   <para>
+    The service command appeared in Pazpar2 version 1.6.32
+   </para>
+  </refsect2>
  </refsect1>
  <refsect1>
   <title>SEE ALSO</title>