Updated ICU config and adjusted description a little.
[pazpar2-moved-to-github.git] / doc / book.xml
index eb6781e..e321728 100644 (file)
@@ -9,7 +9,6 @@
      <!ENTITY % idcommon SYSTEM "common/common.ent">
      %idcommon;
 ]>
-<!-- $Id: book.xml,v 1.19 2007-06-20 08:22:13 adam Exp $ -->
 <book id="book">
  <bookinfo>
   <title>Pazpar2 - User's Guide and Reference</title>
@@ -22,6 +21,9 @@
   <author>
    <firstname>Marc</firstname><surname>Cromme</surname>
   </author>
+  <author>
+   <firstname>Jakub</firstname><surname>Skoczen</surname>
+  </author>
   <releaseinfo>&version;</releaseinfo>
   <copyright>
    <year>&copyright-year;</year>
@@ -35,7 +37,7 @@
     and faceted results.
    </simpara>
    <simpara>
-    This document is a guide and reference to Pazpar version &version;.
+    This document is a guide and reference to Pazpar2 version &version;.
    </simpara>
    <simpara>
     <inlinemediaobject>
@@ -55,7 +57,7 @@
   <para>
    Pazpar2 is a stand-alone metasearch client with a web-service API, designed
    to be used either from a browser-based client (JavaScript, Flash, Java,
-   etc.), from from server-side code, or any combination of the two.
+   etc.), from server-side code, or any combination of the two.
    Pazpar2 is a highly optimized client designed to
    search many resources in parallel. It implements record merging,
    relevance-ranking and sorting by arbitrary data content, and facet
@@ -65,7 +67,8 @@
    -- <ulink url="&url.xslt;">XSLT</ulink> is used to normalize and extract
    data from retrieval records for display and analysis. It can be used
    against any server which supports the 
-   <ulink url="&url.z39.50;">Z39.50</ulink> protocol. Proprietary
+   <ulink url="&url.z39.50;">Z39.50</ulink> and <ulink url="&url.sru;">SRU/SRW</ulink>
+   protocol. Proprietary
    backend modules can be used to support a large number of other protocols
    (please contact Index Data for further information about this).
   </para>
@@ -85,7 +88,7 @@
    scenes. Pazpar2 connects to servers, carries out searches, and
    retrieves, deduplicates, and stores results internally. Your application
    code may periodically inquire about the status of an ongoing operation,
-   and ask to see records or other result set facets. Result become
+   and ask to see records or other result set facets. Result becomes
    available immediately, and it is easy to build end-user interfaces which
    feel extremely responsive, even when searching more than 100 servers
    concurrently.
    If you wish to connect to commercial or other databases which do not
    support open standards, please contact Index Data. We have a licensing
    agreement with a third party vendor which will enable Pazpar2 to access
-   thousands of online databases, in addition the vast number of catalogs
-   and online services that support the Z39.50 protocol.
+   thousands of online databases, in addition to the vast number of catalogs
+   and online services that support the Z39.50/SRU/SRW protocols.
   </para>
   <para>
    Pazpar2 is our attempt to re-think the traditional paradigms for
  <chapter id="installation">
   <title>Installation</title>
   <para>
-   The Pazpar2 package very small. It includes documentation as well
+   The Pazpar2 package is very small. It includes documentation as well
    as the Pazpar2 server. The package also includes a simple user
    interface test1 which consists of a single HTML page and a single
    JavaScript file to illustrate the use of Pazpar2.
    </variablelist>
   </para>
   <para>
-   In order to compile Pazpar2 an ANSI C compiler is
-   required. The requirements should be the same as for YAZ.
+   In order to compile Pazpar2, a C compiler which supports C99 or later
+   is required.
   </para>
 
   <section id="installation.unix">
    </para>
   </section>
 
+  <section id="installation.win32">
+    <title>Installation on Windows (from Source)</title>
+    <para>
+      Pazpar2 can be built for Windows using
+      <ulink url="&url.vstudio;">Microsoft Visual Studio</ulink>.
+      The support files for building YAZ on Windows are located in the
+      <filename>win</filename> directory. The compilation is performed
+      using the <filename>win/makefile</filename> which is to be
+      processed by the NMAKE utility part of Visual Studio.
+    </para>
+    <para>
+      Ensure that the development libraries + header files are
+      available on your system before compiling Pazpar2. For installation
+      of YAZ, refer to the YAZ installation chapter.
+      It is easiest if YAZ and Pazpar2 are unpacked in the same
+      directory (side-by-side).
+    </para>
+    <para>
+      The compilation is tuned by editing the makefile of Pazpar2.
+      The process is similar to YAZ. Adjust the various directories
+      <literal>YAZ_DIR</literal>, <literal>ZLIB_DIR</literal>, ..
+    </para>
+    <para>
+      Compile Pazpar2 by invoking <application>nmake</application> in
+      the <filename>win</filename> directory.
+      The resulting binaries of the build process are located in the
+      <filename>bin</filename> of the Pazpar2 source
+      tree - including the <filename>pazpar2.exe</filename> and necessary DLLs.
+    </para>
+    <para>
+      The Windows version of Pazpar2 is a console application. It may
+      be installed as a Windows Service by adding option 
+      <literal>-install</literal> for the pazpar2 program. This will
+      register Pazpar2 as a service and use the other options provided
+      in the same invocation. For example:
+      <screen>
+       cd \MyPazpar2\etc
+       ..\bin\pazpar2 -install -c pazpar2.cfg -l pazpar2.log
+      </screen>
+      The Pazpar2 service may now be controlled via the Service Control
+      Panel. It may be unregistered by passing the <literal>-remove</literal>
+      option. Example:
+      <screen>
+       cd \MyPazpar2\etc
+       ..\bin\pazpar2 -remove
+      </screen>
+    </para>
+  </section>
+
   <section id="installation.test1">
    <title>Installation of test1 interface</title>
    <para>
 
    <para>
     Start the Pazpar2 daemon using the 'in-source' binary of the Pazpar2
-    daemon.
+    daemon. On Unix the process is:
     <screen>
      cd etc
      cp pazpar2.cfg.dist pazpar2.cfg
      ../src/pazpar2 -f pazpar2.cfg -t edu.xml
     </screen>
+    And on Windows:
+    <screen>
+     cd etc
+     copy pazpar2.cfg.dist pazpar2.cfg
+     ..\bin\pazpar2 -f pazpar2.cfg -t edu.xml
+    </screen>
     This will start a Pazpar2 listener on port 8004. It will proxy 
-    HTTP requests to localhost - port 80, which we asssume will be the regular
+    HTTP requests to localhost - port 80, which we assume will be the regular
     HTTP server on the system. Inspect and modify pazpar2.cfg as needed
-    if this is to be changed. Make a new console and move to the 
-    other stuff. For installation of Pazpar2 as a daemon, refer to the
-    manpage of Pazpar2.
+    if this is to be changed. The -t option specifies the list of targets
+    to use for searches.
+   </para>
+   <para>
+    Make a new console and move to the other stuff.
+    For more information about pazpar2 options refer to the manpage.
    </para>
 
    <para>
    <para>
     Index Data provides Debian packages for Pazpar2. These are prepared
     for Debian versions Etch and Lenny (as of 2007).
-    Theses packages are available at
+    These packages are available at
     <ulink url="&url.pazpar2.download.debian;"/>.
    </para>
   </section>
     Sometimes, it may be necessary to implement functionality on your
     regular webserver that makes use of search results, for example to
     implement data import functionality, emailing results, history
-    lists, personal citation lists, interlibrary loan functionality
-    ,etc. Fortunately, it is simple to exchange information between
+    lists, personal citation lists, interlibrary loan functionality,
+    etc. Fortunately, it is simple to exchange information between
     Pazpar2, your browser scripting, and backend server-side scripting.
     You can send a session ID and possibly a record ID from your browser
     code to your server code, and from there use Pazpar2s webservice API
    <title>Your data model</title>
    <para>
     Pazpar2 does not have a preconceived model of what makes up a data
-    model. There are no assumption that records have specific fields or
+    model. There are no assumptions that records have specific fields or
     that they are organized in any particular way. The only assumption
     is that data comes packaged in a form that the software can work
     with (presently, that means XML or MARC), and that you can provide
     you decide which data elements of the source record you are
     interested in, and you specify any desired massaging or combining of
     elements using an XSLT stylesheet (MARC records are automatically
-    normalized to MARCXML before this step). If desired, you can run
-    multiple XSLT stylesheets in series to accomplish this, but the
-    output of the last one should be a representation of the record in a
-    schema that Pazpar2 understands.
+    normalized to <ulink url="&url.marcxml;">MARCXML</ulink> before this step).
+    If desired, you can run multiple XSLT stylesheets in series to accomplish
+    this, but the output of the last one should be a representation of the
+    record in a schema that Pazpar2 understands.
    </para>
 
    <para>
    </para>
   </section>
 
+  &sect-ajaxdev;
+
   <section id="nonstandard">
    <title>Connecting to non-standard resources</title>
    <para>
     Pazpar2 uses Z39.50 as its switchboard language -- i.e. as far as it
-    is concerned, all resources speak Z39.50. It is, however, equipped
+    is concerned, all resources speak Z39.50, or its webservices derivatives,
+    SRU/SRW. It is, however, equipped
     to handle a broad range of different server behavior, through
     configurable query mapping and record normalization. If you develop
     configuration, stylesheets, etc., for a new type of resources, we
    </para>
 
    <para>
-    But what about resources that don't support Z39.50 at all? The NISO
-    SRU (MXG) protocol is slowly gathering steam. Other resources might
+    But what about resources that don't support Z39.50 at all? Some resources might
     support OpenSearch, private, XML/HTTP-based protocols, or something
     else entirely. Some databases exist only as web user interfaces and
     will require screen-scraping. Still others exist only as static