flesh out dads description
[idzebra-moved-to-github.git] / doc / introduction.xml
1 <chapter id="introduction">
2  <!-- $Id: introduction.xml,v 1.11 2002-08-29 14:05:11 mike Exp $ -->
3  <title>Introduction</title>
4  
5  <sect1>
6   <title>Overview</title>
7   
8   <para>
9    <ulink url="http://www.indexdata.dk/zebra/">
10      Zebra</ulink>
11    is a high-performance, general-purpose structured text
12    indexing and retrieval engine. It reads structured records in a
13    variety of input formats (eg. email, XML, MARC) and provides access
14    to them through a powerful combination of boolean search
15    expressions and relevance-ranked free-text queries.
16   </para>
17
18   <para>
19    Zebra supports large databases (tens of millions of records,
20    tens of gigabytes of data). It allows safe, incremental
21    database updates on live systems. Because Zebra supports
22    the industry-standard information retrieval protocol, Z39.50,
23    you can search Zebra databases using an enormous variety of
24    programs and toolkits, both commercial and free, which understand
25    this protocol.  Application libraries are available to allow
26    bespoke clients to be written in Perl, C, C++, Java, Tcl, Visual
27    Basic, Python, PHP and more - see
28    <ulink url="http://zoom.z3950.org/">the ZOOM web site</ulink>
29    for more information on some of these client toolkits.
30   </para>
31
32   <para>
33    This document is an introduction to the Zebra system. It explains
34    how to compile the software, how to prepare your first database,
35    and how to configure the server to give you the
36    functionality that you need.
37   </para>
38   
39   <para>
40    If you use Zebra, you should visit its
41    <ulink url="http://www.indexdata.dk/zebra/">web site</ulink>,
42    where you can join the
43    <ulink url="http://www.indexdata.dk/mailman/listinfo/zebralist">
44    mailing-list</ulink>
45    by sending email to
46    <email>### zebra-subscribe@mailman.indexdata.dk</email>
47   </para>
48   
49  </sect1>
50  
51  <sect1 id="features">
52   <title>Features</title>
53   
54   <para>
55    This is an overview of some of Zebra's most important features:
56   </para>
57   
58   <para>
59    <itemizedlist>
60
61     <listitem>
62      <para>
63       Very large databases: files for indexes, etc. can be
64       automatically partitioned over multiple disks.
65      </para>
66     </listitem>
67
68     <listitem>
69      <para>
70       Arbitrarily complex records.  The internal data format
71       is an structured format conceptually similar to XML or GRS-1,
72       which allows nested structured data elements and
73       variant forms of data.
74      </para>
75     </listitem>
76
77     <listitem>
78      <para>
79       Robust updating - records can be added and deleted ``on the fly''
80       without rebuilding the index from scratch.
81       Records can be safely updated even while users are accessing
82       the server.
83       The update procedure is tolerant to crashes or hard interrupts
84       during database updating - data can be reconstructed following
85       a crash.
86      </para>
87     </listitem>
88
89     <listitem>
90      <para>
91       Configurable to understand many input formats.
92       A system of input filters driven by
93       regular expressions allows you to easily process most ASCII-based
94       data formats. SGML, XML, ISO2709 (MARC), and raw text are also
95       supported.
96      </para>
97     </listitem>
98
99     <listitem>     
100      <para>
101       Searching supports a powerful combination of boolean queries as
102       well as relevance-ranking (free-text) queries.  Truncation,
103       masking, full regular expression matching and "approximate
104       matching" (eg. spelling mistakes) are all supported.
105      </para>
106     </listitem>
107
108     <listitem>
109       <para>
110         Index-only databases: data can be, and usually is, imported
111         into Zebra's own storage, but Zebra can also refer to
112         external files, building and maintaining indexes of "live"
113         collections.
114       </para>
115     </listitem>
116
117     <listitem>
118      <para>
119       Zebra is written in portable C, so it runs on most Unix-like systems 
120       as well as Windows NT.  A binary distribution for Windows NT is
121       available.
122      </para>
123     </listitem>
124     
125    </itemizedlist>
126    
127   </para>
128   
129   <para>
130    Z39.50 protocol support:
131   </para>
132   
133   <para>   
134    <itemizedlist>
135     <listitem>
136      <para>
137       Protocol facilities: Init, Search, Present (retrieval), Delete,
138       Scan (index browsing) and Sort.
139      </para>
140     </listitem>
141
142     <listitem>
143      <para>
144       Piggy-backed presents are honored in the search-request.
145      </para>
146     </listitem>
147
148     <listitem>
149      <para>
150       Named result sets are supported.
151      </para>
152     </listitem>
153
154     <listitem>
155      <para>
156       Easily configured to support different application profiles, with
157       tables for attribute sets, tag sets, and abstract syntaxes.
158       Additional tables control facilities such as element mappings to
159       different schema (eg., GILS-to-USMARC).
160      </para>
161     </listitem>
162
163     <listitem>
164      <para>
165       Complex composition specifications using Espec-1 (partial support).
166       Element sets are defined using the Espec-1 capability,
167       and are specified in configuration files as simple element
168       requests (and, optionally, variant requests).
169      </para>
170     </listitem>
171
172     <listitem>
173      <para>
174       Multiple record syntaxes
175       for data retrieval: GRS-1, SUTRS,
176       XML, ISO2709 (MARC), etc. Records can be mapped between record syntaxes
177       and schemas on the fly.      
178      </para>
179     </listitem>
180
181    </itemizedlist>
182    
183   </para>
184   
185  </sect1>
186  
187  <sect1 id="apps">
188   <title>Applications</title>
189   <para>
190    Zebra has been deployed in numerous applications, in both the
191    academic and commercial worlds, in application domains as diverse
192    as bibliographic catalogues, geospatial information, structured
193    vocabulary browsing, government information locators, civic
194    information systems, environmental observations, museum information
195    and web indexes.
196   </para>
197   <para>
198    Notable applications include the following:
199   </para>
200
201   <sect2>
202    <title>DADS - the DTV Article Database Service</title>
203    <para>
204     DADS is a huge database of more than ten million records, totalling
205     over ten gigabytes of data.  The records are metadata about academic
206     journal articles, primarily scientific; about 10% of these
207     metadata records link to the full text of the articles they
208     describe, a body of about a terabyte of information (although the
209     full text is not indexed.)
210    </para>
211    <para>
212     It allows students and researchers at DTU (Danmarks Tekniske
213     Universitet, the Technical College of Denmark) to find and order
214     articles from multiple databases in a single query.  The database
215     contains literature on all engineering subjects.  It's available
216     on-line through a web gateway, though currently only to registered
217     users.
218    </para>
219    <para>
220     More information can be found at
221     <ulink url="http://www.dtv.dk/help/dads/index_e.htm"/>
222    </para>
223   </sect2>
224
225   <sect2>
226    <title>Various web indexes</title>
227    <para>
228     Zebra has been used by a variety of institutions to construct
229     indexes of large web sites, typically in the region of tens of
230     millions of pages.  In this role, it functions somewhat similarly
231     to the engine of google or altavista, but for a selected intranet
232     or subset of the whole Web.
233    </para>
234    <para>
235     ### examples, details and numbers, please!
236    </para>
237   </sect2>
238  </sect1>
239
240  <sect1 id="future">
241   <title>Future Directions</title>
242   
243   <para>
244    These are some of the plans that we have for the software in the near
245    and far future, ordered approximately as we expect to work on them.
246   </para>
247   
248   <para>
249    <itemizedlist>
250
251     <listitem>
252      <para>
253        Improved support for XML in search and retrieval. Eventually,
254        the goal is for Zebra to pull double duty as a flexible
255        information retrieval engine and high-performance XML
256        repository.
257      </para>
258     </listitem>
259
260     <listitem>
261      <para>
262        Access to search engine through SOAP/RPC API to allow the
263        construction of applications without requiring Z39.50 tools.
264      </para>
265     </listitem>
266
267     <listitem>
268      <para>
269        Finalisation and documentation of Zebra's C programming
270        API, allowing updates, database management and other functions
271        not readily expressed in Z39.50.  We will also consider
272        exposing the API through SOAP.
273      </para>
274     </listitem>
275
276     <listitem>
277      <para>
278        Improved free-text searching. We're first and foremost octet jockeys and
279        we're actively looking for organisations or people who'd like
280        to contribute experience in relevance ranking and text
281        searching.
282      </para>
283     </listitem>
284
285    </itemizedlist>
286   </para>
287   
288   <para>
289    Programmers thrive on user feedback. If you are interested in a
290    facility that you don't see mentioned here, or if there's something
291    you think we could do better, please drop us a mail.  Better still,
292    implement it and send us the patches.
293   </para>
294   <para>
295    If you think it's all really neat, you're welcome to drop us a line
296    saying that, too. You'll find contact info at the end of this file.
297   </para>
298   
299  </sect1>
300 </chapter>
301  <!-- Keep this comment at the end of the file
302  Local variables:
303  mode: sgml
304  sgml-omittag:t
305  sgml-shorttag:t
306  sgml-minimize-attributes:nil
307  sgml-always-quote-attributes:t
308  sgml-indent-step:1
309  sgml-indent-data:t
310  sgml-parent-document: "zebra.xml"
311  sgml-local-catalogs: nil
312  sgml-namecase-general:t
313  End:
314  -->