This is an overview of some of the most important features of the system.
Supports large databases - files for indices, etc. can be automatically partitioned over multiple disks.
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.
Robust 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.
Supports random storage formats. A system of input filters driven by regular expressions allows you to easily process most ASCII-based data formats. SGML, XML, ISO2709 (MARC), and raw text are also supported.
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.
Can import the data into Zebras own storage, or just refer to external files (good for building indexes of "live" collections).
Supports multiple concrete syntaxes for record exchange (depending on the configuration): GRS-1, SUTRS, XML, ISO2709 (*MARC). Records can be mapped between record syntaxes and schema on the fly.
Supports approximate matching in registers (ie. spelling mistakes, etc).
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.
Z39.50 protocol support:
Protocol facilities: Init, Search, Retrieve, Delete, Browse and Sort.
Piggy-backed presents are honored in the search-request.
Named result sets are supported.
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).
Complex composition specifications using Espec-1 are partially supported (simple element requests only).
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).