Smallish mods to introduction. Rephrasing, mostly.
[idzebra-moved-to-github.git] / doc / introduction.xml
1 <chapter id="introduction">
2  <!-- $Id: introduction.xml,v 1.10 2002-08-29 01:15:25 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       Registers 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 register updating - registers 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, ### (Help, guys!)
194   </para>
195   <para>
196    Notable applications include the following:
197   </para>
198
199   <sect2>
200    <title>DADS - the DTV Article Database Service</title>
201    <para>
202     DADS is a huge database of more than ten million records, totally
203     over ten gigabytes of data.  The records are metadata about academic
204     journal articles, primarily scientific; about 10% of these
205     metadata records link to the full text of the articles they
206     describe, a body of about a terabyte of information (although the
207     full text is not indexed.)
208    </para>
209    <para>
210     It allows students and researchers at DTU (###) to find and order
211     articles from multiple databases in a single query.  The database
212     contains literature on all engineering subjects.  It's available
213     on-line through a web gateway at
214         http://www.dtv.dk/search/index_e.htm
215     though currently only to registered users.
216    </para>
217   </sect2>
218
219   <sect2>
220    <title>Various web indexes</title>
221    <para>
222     Zebra has been used by a variety of institutions to construct
223     indexes of large web sites, typically in the region of tens of
224     millions of pages.  In this role, it functions somewhat similarly
225     to the engine of google or altavista, but for a selected intranet
226     or subset of the whole Web.
227    </para>
228    <para>
229     ### examples, details and numbers, please!
230    </para>
231   </sect2>
232  </sect1>
233
234  <sect1 id="future">
235   <title>Future Directions</title>
236   
237   <para>
238    These are some of the plans that we have for the software in the near
239    and far future, ordered approximately as we expect to work on them.
240   </para>
241   
242   <para>
243    <itemizedlist>
244
245     <listitem>
246      <para>
247        Improved support for XML in search and retrieval. Eventually,
248        the goal is for Zebra to pull double duty as a flexible
249        information retrieval engine and high-performance XML
250        repository.
251      </para>
252     </listitem>
253
254     <listitem>
255      <para>
256        Access to search engine through SOAP/RPC API to allow the
257        construction of applications without requiring Z39.50 tools.
258      </para>
259     </listitem>
260
261     <listitem>
262      <para>
263        Finalisation and documentation of Zebra's C programming
264        API, allowing updates, database management and other functions
265        not readily expressed in Z39.50.  We will also consider
266        exposing the API through SOAP.
267      </para>
268     </listitem>
269
270     <listitem>
271      <para>
272        Improved free-text searching. We're first and foremost octet jockeys and
273        we're actively looking for organisations or people who'd like
274        to contribute experience in relevance ranking and text
275        searching.
276      </para>
277     </listitem>
278
279    </itemizedlist>
280   </para>
281   
282   <para>
283    Programmers thrive on user feedback. If you are interested in a
284    facility that you don't see mentioned here, or if there's something
285    you think we could do better, please drop us a mail.  Better still,
286    implement it and send us the patches.
287   </para>
288   <para>
289    If you think it's all really neat, you're welcome to drop us a line
290    saying that, too. You'll find contact info at the end of this file.
291   </para>
292   
293  </sect1>
294 </chapter>
295  <!-- Keep this comment at the end of the file
296  Local variables:
297  mode: sgml
298  sgml-omittag:t
299  sgml-shorttag:t
300  sgml-minimize-attributes:nil
301  sgml-always-quote-attributes:t
302  sgml-indent-step:1
303  sgml-indent-data:t
304  sgml-parent-document: "zebra.xml"
305  sgml-local-catalogs: nil
306  sgml-namecase-general:t
307  End:
308  -->