Added charmap facility to delete leading articles
[idzebra-moved-to-github.git] / doc / introduction.xml
index 1fbb3aa..68fcc92 100644 (file)
 <chapter id="introduction">
-<title>Introduction</title>
-
-<sect1>
-<title>Overview</title>
-
-<para>
-The Zebra system is a fielded free-text indexing and retrieval engine with a
-Z39.50 frontend. You can use any commercial or freeware Z39.50 client
-to access data stored in Zebra.
-</para>
-
-<para>
-The Zebra server is our first step towards the development of a fully
-configurable, open information system. Eventually, it will be paired
-off with a powerful Z39.50 client to support complex information
-management tasks within almost any application domain. We're making
-the server available now because it's no fun to be in the open
-information retrieval business all by yourself. We want to allow
-people with interesting data to make their things
-available in interesting ways, without having to start out
-by implementing yet another protocol stack from scratch.
-</para>
-
-<para>
-This document is an introduction to the Zebra system. It will tell you
-how to compile the software, and how to prepare your first database.
-It also explains how the server can be configured to give you the
-functionality that you need.
-</para>
-
-<para>
-If you find the software interesting, you should join the support
-mailing-list by sending email to <literal>zebra-request@indexdata.dk</literal>.
-</para>
-
-</sect1>
-
-<sect1 id="features">
-<title>Features</title>
-
-<para>
-This is a list of some of the most important features of the
-system.
-</para>
-
-<para>
-
-<itemizedlist>
-<listitem>
-
-<para>
-Supports updating - records can be added and deleted without
-rebuilding the index from scratch.
-The update procedure is tolerant to crashes or hard interrupts
-during register updating - registers can be reconstructed following a crash.
-Registers can be safely updated even while users are accessing the server.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports large databases - files for indices, etc. can be
-automatically partitioned over multiple disks.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports arbitrarily complex records - base input format is an
-SGML-like syntax which allows nested (structured) data elements, as
-well as variant forms of data.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports random storage formats. A system of input filters driven by
-regular expressions allows you to easily process most ASCII-based
-data formats. SGML, ISO2709 (MARC), and raw text are also supported.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports boolean queries as well as relevance-ranking (free-text)
-searching. Right truncation and masking in terms are supported, as
-well as full regular expressions.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports multiple concrete syntaxes
-for record exchange (depending on the configuration): GRS-1, SUTRS,
-ISO2709 (*MARC). Records can be mapped between record syntaxes and
-schema on the fly.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Supports approximate matching in registers (ie. spelling mistakes,
-etc).
-
-</para>
-</listitem>
-
-</itemizedlist>
-
-</para>
-
-<para>
-Protocol support:
-</para>
-
-<para>
-
-<itemizedlist>
-<listitem>
-
-<para>
-Protocol facilities: Init, Search, Retrieve, Browse and Sort.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Piggy-backed presents are honored in the search-request.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Named result sets are supported.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Easily configured to support different application profiles, with
-tables for attribute sets, tag sets, and abstract syntaxes.
-Additional tables control facilities such as element mappings to
-different schema (eg., GILS-to-USMARC).
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Complex composition specifications using Espec-1 are partially
-supported (simple element requests only).
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Element Set Names are defined using the Espec-1 capability of the
-system, and are given in configuration files as simple element
-requests (and possibly variant requests).
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Some variant support (not fully implemented yet).
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Using the YAZ toolkit for the protocol implementation, the
-server can utilise a plug-in XTI/mOSI implementation (not included) to
-provide SR services over an OSI stack, as well as Z39.50 over TCP/IP.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Zebra runs on most Unix-like systems as well as Windows NT - a binary
-distribution for Windows NT is forthcoming - so far, the installation
-requires MSVC++ to compile the system (we use version 5.0).
-
-</para>
-</listitem>
-
-</itemizedlist>
-
-</para>
-
-</sect1>
-
-<sect1 id="future">
-<title>Future Work</title>
-
-<para>
-This is a beta-release of the software, to allow you to look at
-it - try it out, and assess whether it can be of use to you.
-</para>
-
-<para>
-These are some of the plans that we have for the software in the near
-and far future, approximately ordered after their relative importance.
-Items marked with an
-asterisk will be implemented before the
-last beta release.
-</para>
-
-<para>
-
-<itemizedlist>
-<listitem>
-
-<para>
-*Complete the support for variants.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-*Finalize the data element <emphasis>include</emphasis> facility
-to support multimedia data elements in records.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Add more sophisticated relevance ranking mechanisms. Add support for soundex
-and stemming. Add relevance <emphasis remap="it">feedback</emphasis> support.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Complete EXPLAIN support.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Add support for very large records by implementing segmentation and/or
-variant pieces.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-Support the Item Update extended service of the protocol.
-
-</para>
-</listitem>
-<listitem>
-
-<para>
-We want to add a management system that allows you to
-control your databases and configuration tables from a graphical
-interface. We'll probably use Tcl/Tk to stay platform-independent.
-
-</para>
-</listitem>
-
-</itemizedlist>
-
-</para>
-
-<para>
-Programmers thrive on user feedback. If you are interested in a facility that
-you don't see mentioned here, or if there's something you think we
-could do better, please drop us a mail. If you think it's all really
-neat, you're welcome to drop us a line saying that, too. You'll find
-contact info at the end of this file.
-</para>
-
-</sect1>
+ <!-- $Id: introduction.xml,v 1.26 2003-10-30 11:11:57 adam Exp $ -->
+ <title>Introduction</title>
+ <sect1>
+  <title>Overview</title>
+  
+  <para>
+   <ulink url="http://indexdata.dk/zebra/">Zebra</ulink>
+   is a high-performance, general-purpose structured text
+   indexing and retrieval engine. It reads records in a
+   variety of input formats (eg. email, XML, MARC) and provides access
+   to them through a powerful combination of boolean search
+   expressions and relevance-ranked free-text queries.
+  </para>
+
+  <para>
+   Zebra supports large databases (tens of millions of records,
+   tens of gigabytes of data). It allows safe, incremental
+   database updates on live systems. Because Zebra supports
+   the industry-standard information retrieval protocol, Z39.50,
+   you can search Zebra databases using an enormous variety of
+   programs and toolkits, both commercial and free, which understand
+   this protocol.  Application libraries are available to allow
+   bespoke clients to be written in Perl, C, C++, Java, Tcl, Visual
+   Basic, Python, PHP and more - see
+   <ulink url="http://zoom.z3950.org/">the ZOOM web site</ulink>
+   for more information on some of these client toolkits.
+  </para>
+
+  <para>
+   This document is an introduction to the Zebra system. It explains
+   how to compile the software, how to prepare your first database,
+   and how to configure the server to give you the
+   functionality that you need.
+  </para>
+ </sect1>
+ <sect1 id="features">
+  <title>Features</title>
+  
+  <para>
+   This is an overview of some of Zebra's most important features:
+  </para>
+  
+  <para>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+      Very large databases: logical files can be
+      automatically partitioned over multiple disks.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Arbitrarily complex records.  The internal data format
+      is a structured format conceptually similar to XML or GRS-1,
+      which allows lists, nested structured data elements and
+      variant forms of data.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Robust updating - records can be added and deleted ``on the fly''
+      without rebuilding the index from scratch.
+      Records can be safely updated even while users are accessing
+      the server.
+      The update procedure is tolerant to crashes or hard interrupts
+      during database updating - data can be reconstructed following
+      a crash.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Configurable to understand many input formats.
+      A system of input filters driven by
+      regular expressions allows most ASCII-based
+      data formats to be easily processed.
+      SGML, XML, ISO2709 (MARC), and raw text are also
+      supported.
+     </para>
+    </listitem>
+
+    <listitem>     
+     <para>
+      Searching supports a powerful combination of boolean queries as
+      well as relevance-ranking (free-text) queries.  Truncation,
+      masking, full regular expression matching and "approximate
+      matching" (eg. spelling mistakes) are all handled.
+     </para>
+    </listitem>
+
+    <listitem>
+      <para>
+       Index-only databases: data can be, and usually is, imported
+        into Zebra's own storage, but Zebra can also refer to
+        external files, building and maintaining indexes of "live"
+       collections.
+      </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Zebra is written in portable C, so it runs on most Unix-like systems 
+      as well as Windows NT.  A binary distribution for Windows NT is
+      available at
+      <ulink url="http://ftp.indexdata.dk/pub/zebra/win32/"/>,
+      and pre-built packages are available for some Linux
+      distributions:
+      Red Hat 7.x RPMs at
+      <ulink url="http://ftp.indexdata.dk/pub/zebra/RedHat7.X/"/>
+      and Debian packages at
+      <ulink url="http://ftp.indexdata.dk/pub/zebra/debian/"/>
+     </para>
+    </listitem>
+    
+   </itemizedlist>
+   
+  </para>
+  
+  <para>
+   Z39.50 protocol support:
+  </para>
+  
+  <para>   
+   <itemizedlist>
+    <listitem>
+     <para>
+      Protocol facilities: Init, Search, Present (retrieval),
+      Segmentation (support for very large records), Delete, Scan
+      (index browsing), Sort, Close and support for the ``update''
+      Extended Service to add or replace an existing XML record.
+       <!-- Adam says:
+            * Supported
+            You can insert/delete/replace an XML record given an
+            "external" ID.  Actually this way of doing ES Update was
+            meant for an OAI application that Ian Ibbotson had in
+            mind to implement. The "update" command in YAZ client
+            implements this on the client side. My plan is to make
+            this available in ZOOM "extended" soon..
+       -->
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Piggy-backed presents are honored in the search request - that
+      is, a subset of the found records can be returned directly with
+      a search response, enabling search and retrieval to happen in a
+      single round-trip.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Named result sets are supported.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Easily configured to support different application profiles, with
+      tables for attribute sets, tag sets, and abstract syntaxes.
+      Additional tables control facilities such as element mappings to
+      different schema (eg., GILS-to-USMARC).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Complex composition specifications using Espec-1 (partial support).
+      Element sets are defined using the Espec-1 capability,
+      and are specified in configuration files as simple element
+      requests (and, optionally, variant requests).
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+      Multiple record syntaxes
+      for data retrieval: GRS-1, SUTRS,
+      XML, ISO2709 (MARC), etc. Records can be mapped between record syntaxes
+      and schemas on the fly.      
+     </para>
+    </listitem>
+
+   </itemizedlist>
+   
+  </para>
+  
+ </sect1>
+  <sect1 id="apps">
+  <title>Applications</title>
+  <para>
+   Zebra has been deployed in numerous applications, in both the
+   academic and commercial worlds, in application domains as diverse
+   as bibliographic catalogues, geospatial information, structured
+   vocabulary browsing, government information locators, civic
+   information systems, environmental observations, museum information
+   and web indexes.
+  </para>
+  <para>
+   Notable applications include the following:
+  </para>
+
+  <sect2>
+   <title>DADS - the DTV Article Database Service</title>
+   <para>
+    DADS is a huge database of more than ten million records, totalling
+    over ten gigabytes of data.  The records are metadata about academic
+    journal articles, primarily scientific; about 10% of these
+    metadata records link to the full text of the articles they
+    describe, a body of about a terabyte of information (although the
+    full text is not indexed.)
+   </para>
+   <para>
+    It allows students and researchers at DTU (Danmarks Tekniske
+    Universitet, the Technical College of Denmark) to find and order
+    articles from multiple databases in a single query.  The database
+    contains literature on all engineering subjects.  It's available
+    on-line through a web gateway, though currently only to registered
+    users.
+   </para>
+   <para>
+    More information can be found at
+    <ulink url="http://www.dtv.dk/help/dads/index_e.htm"/>
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>NLI-Z39.50 - a Natural Language Interface for Libraries</title>
+   <para>
+    Fernuniversit&#x00E4;t Hagen in Germany have developed a natural
+    language interface for access to library databases.
+    <ulink url="http://ki212.fernuni-hagen.de/nli/NLIintro.html"/>
+    In order to evaluate this interface for recall and precision, they
+    chose Zebra as the basis for retrieval effectiveness.  The Zebra
+    server contains a copy of the GIRT database, consisting of more
+    than 76000 records in SGML format (bibliographic records from
+    social science), which are mapped to MARC for presentation.
+   </para>
+   <para>
+    (GIRT is the German Indexing and Retrieval Testdatabase.  It is a
+    standard German-language test database for intelligent indexing
+    and retrieval systems.  See
+    <ulink url="http://www.gesis.org/forschung/informationstechnologie/clef-delos.htm"/>)
+   </para>
+   <para>
+    Evaluation will take place as part of the TREC/CLEF campaign 2003 
+    <ulink url="http://clef.iei.pi.cnr.it or http://www4.eurospider.ch/CLEF/"/>
+   </para>
+   <para>
+    For more information, contact Johannes Leveling
+    <email>Johannes.Leveling@FernUni-Hagen.De</email>
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>ULS (Union List of Serials)</title>
+   <para>
+    The M25 Systems Team
+    has created a union catalogue for the periodicals of the
+    twenty-one constituent libraries of the University of London and
+    the University of Westminster
+    (<ulink url="http://www.m25lib.ac.uk/ULS/"/>).
+    They have achieved this using an
+    unusual architecture, which they describe as a
+    ``non-distributed virtual union catalogue''.
+   </para>
+   <para>
+    The member libraries send in data files representing their
+    periodicals, including both brief bibliographic data and summary
+    holdings.  Then 21 individual Z39.50 targets are created, each
+    using Zebra, and all mounted on the single hardware server.
+    The live service provides a web gateway allowing Z39.50 searching
+    of all of the targets or a selection of them.  Zebra's small
+    footprint allows a relatively modest system to comfortably host
+    the 21 servers.
+   </para>
+   <para>
+    More information can be found at
+    <ulink url="http://www.m25lib.ac.uk/ULS/"/>
+   </para>
+  </sect2>
+
+  <sect2>
+   <title>Various web indexes</title>
+   <para>
+    Zebra has been used by a variety of institutions to construct
+    indexes of large web sites, typically in the region of tens of
+    millions of pages.  In this role, it functions somewhat similarly
+    to the engine of google or altavista, but for a selected intranet
+    or a subset of the whole Web.
+   </para>
+   <para>
+    For example, Liverpool University's web-search facility (see on
+    the home page at
+    <ulink url="http://www.liv.ac.uk/"/>
+    and many sub-pages) works by relevance-searching a Zebra database
+    which is populated by the Harvest-NG web-crawling software.
+   </para>
+   <para>
+    For more information on Liverpool university's intranet search
+    architecture, contact John Gilbertson
+    <email>jgilbert@liverpool.ac.uk</email>
+   </para>
+   <para>
+    Kang-Jin Lee
+    <email>lee@arco.de</email>,
+    has recently modified the Harvest web indexer to use Zebra as
+    its native repository engine.  His comments on the switch over
+    from the old engine are revealing:
+    <blockquote>
+     <para>
+      The first results after some testing with Zebra are very
+      promising.  The tests were done with around 220,000 SOIF files,
+      which occupies 1.6GB of disk space.
+     </para>
+     <para>
+      Building the index from scratch takes around one hour with Zebra
+      where [old-engine] needs around five hours.  While [old-engine]
+      blocks search requests when updating its index, Zebra can still
+      answer search requests.
+      [...]
+      Zebra supports incremental indexing which will speed up indexing
+      even further.
+     </para>
+     <para>
+      While the search time of [old-engine] varies from some seconds
+      to some minutes depending how expensive the query is, Zebra
+      usually takes around one to three seconds, even for expensive
+      queries.
+      [...]
+      Zebra can search more than 100 times faster than [old-engine]
+      and can process multiple search requests simultaneously
+     </para>
+     <para>
+      I am very happy to see such nice software available under GPL.
+     </para>
+    </blockquote>
+   </para>
+  </sect2>
+ </sect1>
+
+
+ <sect1 id="support">
+  <title>Support</title>
+  <para>
+   You can get support for Zebra from at least three sources.
+  </para>
+  <para>
+   First, there's the Zebra web site at
+   <ulink url="http://indexdata.dk/zebra/"/>,
+   which always has the most recent version available for download.
+   If you have a problem with Zebra, the first thing to do is see
+   whether it's fixed in the current release.
+  </para>
+  <para>
+   Second, there's the Zebra mailing list.  Its home page at
+   <ulink url="http://indexdata.dk/mailman/listinfo/zebralist"/>
+   includes a complete archive of all messages that have ever been
+   posted on the list.  The Zebra mailing list is used both for
+   announcements from the authors (new
+   releases, bug fixes, etc.) and general discussion.  You are welcome
+   to seek support there.  Join by sending email to
+   <email>zebra-request@indexdata.dk</email> with the word
+   <literal>subscribe</literal> in the body of the message.
+  </para>
+  <para>
+   Third, it's possible to buy a commercial support contract, with
+   well defined service levels and response times, from Index Data.
+   See
+   <ulink url="http://indexdata.dk/support/"/>
+   for details.
+  </para>
+ </sect1>  
+
+
+ <sect1 id="future">
+  <title>Future Directions</title>
+  
+  <para>
+   These are some of the plans that we have for the software in the near
+   and far future, ordered approximately as we expect to work on them.
+  </para>
+  
+  <para>
+   <itemizedlist>
+
+    <listitem>
+     <para>
+       Improved support for XML in search and retrieval. Eventually,
+       the goal is for Zebra to pull double duty as a flexible
+       information retrieval engine and high-performance XML
+       repository.  The recent addition of XPath searching is one
+       example of the kind of enhancement we're working on.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+       Access to the search engine through SOAP/RPC API to allow the
+       construction of applications without requiring Z39.50 tools.
+       This will shortly be available by means of Index Data's
+       SRW-to-Z39.50 gateway, currently in beta test.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+       Finalisation and documentation of Zebra's C programming
+       API, allowing updates, database management and other functions
+       not readily expressed in Z39.50.  We will also consider
+       exposing the API through SOAP.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+       Support for the use of Perl both for access to the Zebra API
+       and for building extension ``plug-ins'' such as input filters.
+       The code for this has been contributed to the source tree by
+       Peter Popovics
+       <email>pop@technomat.hu</email>,
+       and is in the process of being integrated and tested.
+     </para>
+    </listitem>
+
+    <listitem>
+     <para>
+       Improved free-text searching. We're first and foremost octet jockeys and
+       we're actively looking for organisations or people who'd like
+       to contribute experience in relevance ranking and text
+       searching.
+     </para>
+    </listitem>
+
+   </itemizedlist>
+  </para>
+  
+  <para>
+   Programmers thrive on user feedback. If you are interested in a
+   facility that you don't see mentioned here, or if there's something
+   you think we could do better, please drop us a mail.  Better still,
+   implement it and send us the patches.
+  </para>
+  <para>
+   If you think it's all really neat, you're welcome to drop us a line
+   saying that, too. You can email us on
+   <email>info@indexdata.dk</email>
+   or check the contact info at the end of this manual.
+  </para>
+  
+ </sect1>
 </chapter>
+ <!-- Keep this comment at the end of the file
+ Local variables:
+ mode: sgml
+ sgml-omittag:t
+ sgml-shorttag:t
+ sgml-minimize-attributes:nil
+ sgml-always-quote-attributes:t
+ sgml-indent-step:1
+ sgml-indent-data:t
+ sgml-parent-document: "zebra.xml"
+ sgml-local-catalogs: nil
+ sgml-namecase-general:t
+ End:
+ -->