Rolling tweaks. Nothing earth-shattering yet, though I have
[idzebra-moved-to-github.git] / doc / introduction.xml
1 <chapter id="introduction">
2  <!-- $Id: introduction.xml,v 1.9 2002-08-28 08:14:47 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 the most important features of the
56    system.
57   </para>
58   
59   <para>
60    <itemizedlist>
61
62     <listitem>
63      <para>
64       Supports large databases - files for indexes, etc. can be
65       automatically partitioned over multiple disks.
66      </para>
67     </listitem>
68
69     <listitem>
70      <para>
71       Supports arbitrarily complex records - base input format is an
72       SGML-like syntax which allows nested (structured) data elements, as
73       well as variant forms of data.
74      </para>
75     </listitem>
76
77     <listitem>
78      <para>
79       Robust updating - records can be added and deleted without
80       rebuilding the index from scratch.
81       The update procedure is tolerant to crashes or hard interrupts
82       during register updating - registers can be reconstructed following
83       a crash.
84       Registers can be safely updated even while users are accessing
85       the server.
86      </para>
87     </listitem>
88
89     <listitem>
90      <para>
91       Supports random storage formats. A system of input filters driven by
92       regular expressions allows you to easily process most ASCII-based
93       data formats. SGML, XML, ISO2709 (MARC), and raw text are also
94       supported.
95      </para>
96     </listitem>
97
98     <listitem>     
99      <para>
100       Supports boolean queries as well as relevance-ranking (free-text)
101       searching. Right truncation and masking in terms are supported, as
102       well as full regular expressions.
103      </para>
104     </listitem>
105
106     <listitem>
107       <para>
108         Can import the data into Zebras own storage, or just refer to
109         external files (good for building indexes of "live"
110         collections).
111       </para>
112     </listitem>
113
114     <listitem>
115      <para>
116       Supports multiple concrete syntaxes
117       for record exchange (depending on the configuration): GRS-1, SUTRS,
118       XML, ISO2709 (*MARC). Records can be mapped between record syntaxes
119       and schema on the fly.      
120      </para>
121     </listitem>
122
123     <listitem>     
124      <para>
125       Supports approximate matching in registers (ie. spelling mistakes,
126       etc).
127      </para>
128     </listitem>
129     
130     <listitem>
131      <para>
132       Zebra is written in portable C, so it runs on most Unix-like systems 
133       as well as Windows NT - a binary distribution for Windows NT is available.
134      </para>
135     </listitem>
136     
137    </itemizedlist>
138    
139   </para>
140   
141   <para>
142    Z39.50 protocol support:
143   </para>
144   
145   <para>   
146    <itemizedlist>
147     <listitem>
148      <para>
149       Protocol facilities: Init, Search, Retrieve, Delete, Browse and Sort.
150      </para>
151     </listitem>
152
153     <listitem>
154      <para>
155       Piggy-backed presents are honored in the search-request.
156      </para>
157     </listitem>
158
159     <listitem>
160      <para>
161       Named result sets are supported.
162      </para>
163     </listitem>
164     <listitem>
165      <para>
166       Easily configured to support different application profiles, with
167       tables for attribute sets, tag sets, and abstract syntaxes.
168       Additional tables control facilities such as element mappings to
169       different schema (eg., GILS-to-USMARC).
170      </para>
171     </listitem>
172
173     <listitem>
174      <para>
175       Complex composition specifications using Espec-1 are partially
176       supported (simple element requests only).
177      </para>
178     </listitem>
179
180     <listitem>
181      <para>
182       Element Set Names are defined using the Espec-1 capability of the
183       system, and are given in configuration files as simple element
184       requests (and possibly variant requests).
185      </para>
186     </listitem>
187
188    </itemizedlist>
189    
190   </para>
191   
192  </sect1>
193  
194  <sect1 id="apps">
195   <title>Applications</title>
196   <para>
197    Zebra has been deployed in numerous applications, in both the
198    academic and commercial worlds, in application domains as diverse
199    as bibliographic information, geospatial, ### (Help, guys!)
200   </para>
201   <para>
202    Notable applications include the following:
203   </para>
204
205   <sect2>
206    <title>DADS - the DTV Article Database Service</title>
207    <para>
208     DADS is a huge database of more than ten million records, totally
209     over ten gigabytes of data.  The records are metadata about academic
210     journal articles, primarily scientific; about 10% of these
211     metadata records link to the full text of the articles they
212     describe, a body of about a terabyte of information (although the
213     full text is not indexed.)
214    </para>
215    <para>
216     It allows students and researchers at DTU (###) to find and order
217     articles from multiple databases in a single query.  The database
218     contains literature on all engineering subjects.  It's available
219     on-line through a web gateway at
220         http://www.dtv.dk/search/index_e.htm
221     though currently only to registered users.
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 Work</title>
242   
243   <para>
244    These are some of the plans that we have for the software in the near
245    and far future, approximately ordered after their relative importance.
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, documentation of the Zebra API. Consider
270        exposing the API through SOAP as well (allowing updates,
271        database management).
272      </para>
273     </listitem>
274
275     <listitem>
276      <para>
277        Improved free-text searching. We're first and foremost octet jockeys and
278        we're actively looking for organisations or people who'd like
279        to contribute experience in relevance ranking and text
280        searching.
281      </para>
282     </listitem>
283
284    </itemizedlist>
285   </para>
286   
287   <para>
288    Programmers thrive on user feedback. If you are interested in a
289    facility that you don't see mentioned here, or if there's something
290    you think we could do better, please drop us a mail.
291    If you think it's all really neat, you're welcome to drop us a line
292    saying that, too. You'll find contact info at the end of this file.
293   </para>
294   
295  </sect1>
296 </chapter>
297  <!-- Keep this comment at the end of the file
298  Local variables:
299  mode: sgml
300  sgml-omittag:t
301  sgml-shorttag:t
302  sgml-minimize-attributes:nil
303  sgml-always-quote-attributes:t
304  sgml-indent-step:1
305  sgml-indent-data:t
306  sgml-parent-document: "zebra.xml"
307  sgml-local-catalogs: nil
308  sgml-namecase-general:t
309  End:
310  -->