added section on explain, search, scan and on PQN
authorMarc Cromme <marc@indexdata.dk>
Fri, 16 Jun 2006 12:54:55 +0000 (12:54 +0000)
committerMarc Cromme <marc@indexdata.dk>
Fri, 16 Jun 2006 12:54:55 +0000 (12:54 +0000)
doc/querymodel.xml

index b067c98..71cca4d 100644 (file)
@@ -1,5 +1,5 @@
  <chapter id="querymodel">
-  <!-- $Id: querymodel.xml,v 1.7 2006-06-16 10:30:12 marc Exp $ -->
+  <!-- $Id: querymodel.xml,v 1.8 2006-06-16 12:54:55 marc Exp $ -->
   <title>Query Model</title>
   
   <sect1 id="querymodel-overview">
      to the international standards 
      <ulink url="&url.z39.50;">Z39.50</ulink> and
      <ulink url="&url.sru;">SRU</ulink>,
-     and implement the query model defined there.
-     Unfortunately, the Z39.50 query model has only defined a binary
+     and implement the 
+     <literal>type-1 Reverse Polish Notation (RPN)</literal> query
+     model defined there.
+     Unfortunately, this model has only defined a binary
      encoded representation, which is used as transport packaging in
      the Z39.50 protocol layer. This representation is not human
      readable, nor defines any convenient way to specify queries. 
     </para>
-   <!-- tell about RPN - include link to YAZ 
-        url.yaz.pqf -->
-
+    <para>
+     Since the <literal>type-1 (RPN)</literal> 
+     query structure has no direct, useful string
+     representation, every origin application needs to provide some
+     form of mapping from a local query notation or representation to it.
+     </para>
 
 
    <sect3 id="querymodel-query-languages-pqf">
    <para>
      Index Data has defined a textual representaion in the 
      <literal>Prefix Query Format</literal>, short
-     <literal>PQF</literal>, which then has been adopted by other
-     parties developing Z39.50 software. It is also often referred to as
+     <literal>PQF</literal>, which mappes 
+      <literal>one-to-one</literal> to binary encoded  
+      <literal>type-1 RPN</literal> query packages.
+      It has been adopted by other
+      parties developing Z39.50 software, and is often referred to as
      <literal>Prefix Query Notation</literal>, or in short 
-     <literal>PQN</literal>, and is thoroughly explained in       
-     <xref linkend="querymodel-pqf"/>. 
+     <literal>PQN</literal>. See       
+     <xref linkend="querymodel-pqf"/> for further explanaitions and
+     descriptions of Zebra's capabilities.  
     </para>
    </sect3>    
 
-
-   <!-- PQF/RPN is natively supported. CQL is NOT . So we need a map -->
    <sect3 id="querymodel-query-languages-cql">
     <title>Common Query Language (CQL)</title>
-   <para>
-     In addition, Zebra can be configured to understand and map the 
-     <literal>Common Query Language</literal>
-     (<ulink url="&url.cql;">CQL</ulink>)
-     to PQF. See an introduction on the mapping to the internal query
-     representation in  
+     <para>
+      The query model of the   <literal>type-1 RPN</literal>,
+      expressed in <literal>PQF/PQN</literal> is natively supported. 
+      On the other hand, the default <literal>SRU</literal>
+      webservices <literal>Common Query Language</literal>
+     <ulink url="&url.cql;">CQL</ulink> is not natively supported.
+     </para>
+     <para>
+     Zebra can be configured to understand and map CQL to PQF. See
      <xref linkend="querymodel-cql-to-pqf"/>.
     </para>
    </sect3>    
  
    </sect2>
 
-   <sect2 id="querymodel-query-types">
-    <title>Query types</title>
+   <sect2 id="querymodel-operation-types">
+    <title>Operation types</title>
     <para>
+     Zebra supports all of the three different
+     <literal>Z39.50/SRU</literal> operations defined in the
+     standards: <literal>explain</literal>, <literal>search</literal>, 
+     and <literal>scan</literal>. A short description of the
+     functionality and purpose of each is quite in order here. 
     </para>
 
-    <sect3 id="querymodel-query-type-explain">
-     <title>Explain Queries</title>
+    <sect3 id="querymodel-operation-type-explain">
+     <title>Explain Operation</title>
      <para>
+      The <emphasis>syntax</emphasis> of Z39.50/SRU queries is
+      well known to any client, but the specific
+      <emphasis>semantics</emphasis> - taking into account a
+      particular servers functionalities and abilities - must be
+      discovered from case to case. Enters the 
+      <literal>explain</literal> operation, which provides the means
+      for learning which  
+      <emphasis>fields</emphasis> (also called
+      <emphasis>indexes</emphasis> or <emphasis>access points</emphasis>
+      are provided, which default parameter the server uses, which
+      retrieve document formats are defined, and which specific parts
+      of the general query model are supported.      
+     </para>
+     <para>
+      The Z39.50 embeddes the <literal>explain</literal> operation
+      by perfoming a 
+      <literal>search</literal> in the magic 
+      <literal>IR-Explain-1</literal> database;
+      see <xref linkend="querymodel-exp1"/>. 
+     </para>
+     <para>
+      In SRU, <literal>explain</literal> is an entirely  seperate
+      operation, which returns an  <literal>Zeerex
+      XML</literal> record according to the 
+      structure defined by the protocol.
+     </para>
+     <para>
+      In both cases, the information gathered through
+      <literal>explain</literal> operations can be used to
+      auto-configure a client user interface to the servers
+      capabilities.  
      </para>
     </sect3>
 
-    <sect3 id="querymodel-query-type-search">
-     <title>Search Queries</title>
+    <sect3 id="querymodel-operation-type-search">
+     <title>Search Operation</title>
      <para>
+      Search and retrieve interactions are the raison d'ĂȘtre. 
+      They are used to query the remote database and
+      return search result documents.  Search queries span from
+      simple free text searches to nested complex boolean queries,
+      targeting specific indexes, and possibly enhanced with many
+      query semantic specifications. Search interactions are the heart
+      and soul of Z39.50/SRU servers.
      </para>
     </sect3>
 
-    <sect3 id="querymodel-query-type-scan">
-     <title>Scan Queries</title>
+    <sect3 id="querymodel-operation-type-scan">
+     <title>Scan Operation</title>
+     <para>
+      The <literal>scan</literal> operation is a helper functionality,
+       which operates on one index or access point a time. 
+     </para>
      <para>
+      It provides
+      the means to investigate the content of specific indexes.
+      Scanning an index returns a handfull of terms actually fond in
+      the indexes, and in addition the <literal>scan</literal>
+      operation returns th enumber of documents indexed by each term.
+      A search client can use this information to propose proper
+      spelling of search terms, to auto-fill search boxes, or to 
+      display  controlled vocabularies.
      </para>
     </sect3>