--- 2.2.10 2026/01/29

Debian: do not enable and start systemd service by default as
there is no configuration in /etc/idzebra/zebra.cfg

RPM: fix postun section to be part of idzebra-2.0 pkg

--- 2.2.9 2026/01/28

Debian: systemd service

Add YAZ libs + deps to libidzebra #69

doc: Use rsvg-convert rather than inkscape

Fix compilation with c23 #63

--- 2.2.8 2024/10/22

Fix implicit atoi/stdlib import

--- 2.2.7 2023/01/13

Fix Tcl not enabled by confiugre (#48)

Buffer overflow fixes and reformats (#47)

--- 2.2.6 2022/12/14

zebraidx: Mention -f option when skipping index lines #39

Fix result-sets not removed in some cases #38

--- 2.2.5 2022/06/22

Fix buffer overflow in dictionary insert handling. Could lead to
assert failures in some cases. All users should upgrade.

--- 2.2.4 2022/05/30

Upgrade configure.ac to version 2.69

Make memMax a size_t type ZEB-694 #34

Fix sample XSLT for Libxslt 1.1.35 ZEB-693

--- 2.2.3 2021/10/04

Fix #26: Index contents not shown when using "zebra::index" elements
in ICU mode.

Update XSL in example/marcxml. Thx to Jaider A. F.

zebra.pc fixes. Add Requires directive (so we don't have to
guess YAZ flags here). Simplify value for Libs, but add
all libs in Libs.private. Cflags: No need for I${includedir}

Fix #24: Do not tokenize in ICU phrase rule.

Windows: update for VS 2019, ICU 68.

--- 2.2.2 2020/11/05

Add bf_xopen, bf_xclose, bf_alloc, bf_free symbols to keep it
ABI compatible. Closes #22.

Bump zebra libraries from 0:1:0 to 0:2:0 (revision + 1).

A few typos fixed.

--- 2.2.1 2020/10/22

Remove bf_xopen, bf_xclose, bf_alloc, bf_free and tests for them.
These utilities are not used anywhere in Zebra. Closes #12.

Convert some Zebra configuration files in ISO-8859-1 to UTF-8.

--- 2.2.0 2020/09/14

For configure, --with-yaz=pkg makes it use yaz.pc rather than
yaz-config.

New generated pkg-config file zebra.pc.

For configure, use pkg-config to find Expat library.

For configure, use pkg-config to find Tcl library.

--- 2.1.4 2018/08/01

Avoid useless debug info for facet handling ZEB-682

--- 2.1.3 2017/12/06

Perform reverse mapping for facets ZEB-601

Update to Expat 2.2.3

--- 2.1.2 2017/08/04

Update to Expat 2.2.3 on Windows installer

--- 2.1.1 2017/07/17

Use Expat 2.2.2 on Windows installer ZEB-676

--- 2.1.0 2017/04/03

Fix 'make -j no check' by serializing some tests that weren't
supposed to be run in parallel.

Add support for user-defined groups in mod-dom filter. A group can
be generated with <group>-indexing element with property unit.  Unit
is one of the known Z39.50 proximity units and defaults to "element"
if omitted. This can be searched with @prox 0 0 0 0 k 8 which boils
down to "same known unit=element".

Fix compilation with Tcl 8.6 and later. Closes #4

--- 2.0.62 2016/01/30

Zebra SCM moved to GitHub https://github.com/indexdata/idzebra

Make packages for Ubuntu 15.10/Wily Werewolf.

Fix incorrect scan terms with result set limit. Closes #1

Fix documentation of of chr's equivalent directive ZEB-672
And add a few tests for the behavior.

Allow @attr 2=102 for numeric index

--- 2.0.61 2015/09/15

Upgrade to debhelper version 7
Not upgrading to version 9 now. It would move libraries and modules
to /usr/lib/{arch}.

Many documentation fixes. Thanks to David Crossley.

Build: Remove Debian squeeze. Add CentOS 7. Remove Ubuntu Saucy.
Add Ubuntu Vivid.

Fix modulePath for examples ZEB-665

Fix typo in path to oai-pmh example

--- 2.0.60 2015/02/06

Fix ICU phrase searches for terms split by ICU ZEB-664

Update Visual Studio nmake file for VS 2013.

--- 2.0.59 2014/04/17

Fix 0 ptr reference (crash) during search that occurred due to slightly
different behavior of YAZ 5.0.22 / YAZ 5.0.23.

--- 2.0.58 2014/03/06

Update OAI example README and allow Bib-1 attribute searches.

Fix ICU indexing test. The code was not really broken, but the test
program was.

--- 2.0.57 2014/02/28

Deb/RPM/Win Zebra packages uses libyaz5 (rather than libyaz4). This adds
SRU 2.0 support for Zebra.

--- 2.0.56 2013/11/04

Updates for YAZ 5. Zebra compiles fine with YAZ 4 still.

--- 2.0.55 2013/06/24

Addx + document zebraidx command "check", which checks consistency of
register.

Debian : idzebra-2.0-utils includes init.d script. Includes logrotate as
well. The zebrasrv init script listens on port 2100. At this time,
zebra.cfg, is not part of the package. Administrator must install or
modify $CONFIG to point to a working zebra.cfg.

RPM: idzebra-2.0 includes init.d script. Also includes logrotate. The
zebrasrv init script listens on port 2100 (IPv4 + IPv6). At this time,
zebra.cfg, is not part of the package. Administrator must install or
modify $CONFIG to point to a working zebra.cfg.

--- 2.0.54 2013/01/21

For mod_dom filter, allow type="adelete", which will not treat a failed
delete as an error (such as a record ID that do not exist already).

Log XML2/XSLT errors to yaz_log instead of stdout/stderr.

Relay \-character in non-regexp searches. Was treated as backslash
sequence before.

--- 2.0.53 2012/12/03

Improve hit estimate for or-searches (typically truncation)

Fix snippets for non-ICU / seqno not updated.

Replace key_compare_it with key_compare. This is because key_compare_it
throws exception on some CPUs with alignment constraints.

ICU: support @attr 5=2, @attr 5=3 in searches. (left truncation and
left+right truncation).

--- 2.0.52 2012/05/31

Fix problem in dictionary due to increase max size of term.

--- 2.0.51 2012/05/31

Fix buffer overrun for terms using ICU normalization.

Increase max size of indexing term from 256 to 512.

--- 2.0.50 2011/11/01

Fix a bug in zebra_begin_trans where Zebra could mark a transaction
complete when it actually failed. This could happen if register files
could not be opened.

--- 2.0.49 2011/09/02

Scan: allow preferred position > number + 1

Fix bug #4592: dict_scan misses

Fix snippets for complete fields, bug #4590. The
snippet_add_complete_fields (chr-system) now takes the indexing term
verbatim and makes that the display term.

--- 2.0.48 2011/06/28

Utility idebra-abs2dom part of distribution and deb+RPM packages.

Fix problem with scan and complete subfields (:p) . In some cases,
the display scan terms, would be invalid.

--- 2.0.47 2011/05/24

RPM: Store libraries in /usr/lib64 on 64-bit platforms.

Zebra honors SRU sortkeys. If used with YAZ 4.2.0 or later,
CQL sortby is honored as well.

Fix scan's handling of normalized terms. Some terms were incorrectly
ignored in the scan results, CJK terms in particular.

--- 2.0.46 2011/03/23

Fix bug in dictionary component of Zebra that could lead to
inconsistent register assert for large deleteions.

Improve estimate hits for phrase searches.

--- 2.0.45 2010/12/22

Add Debian package for Ubuntu maverick.

Update to newer Libxml2/Libxslt for Windows package.

Escape-sequences are disabled for RPN-queries with truncation=105/106.
These, unlike regular expressions, do not support \-sequences .

--- 2.0.44 2010/06/29

grs1: avoid term_len < 0 for .abs operator 'range'

ICU: fix use of un-init variable.

More reasonable approx hits for truncated searches.

Updates WRT Odr_int (YAZ 4).

--- 2.0.43 2009/11/05

Fix hits counts for searches when @attr 12=n is in use. This bug
was introduced in 2.0.40.

--- 2.0.42 2009/10/08

Proximity modifications. The optimized proximity now deals with more
cases, ie all prox of the form @prox 0 d 1 1,2,3 k 2 ..
That's exlusive==0, any distance, ordered (true), relation (<, =, <=),
known unit word.

Fix bug WRT inconsistent registers, bug #3062.

Fix install doc rule so it's compatible with Automake 1.11.

--- 2.0.41 2009/08/24

Fix typos and other errors in the documentation. Thanks to Galen
Charlton.

Fix DOM filter so that full record ID (z:id) if given is used verbatim
rather than truncated until first blank - in other words use memcpy
rather than sscanf. For PI fix record attributes parsing which was
completely broken.

--- 2.0.40 2009/07/13

Fixed problem in result set handling and segment handling.

--- 2.0.39 2009/07/09

Improved speed of record fetching by using a different block sizes
for recd{A,B}.

Added zlib-compression of recd-storage (record data). This is enabled
by using recordCompression: zlib in zebra.cfg.

Dictionary delete more agressive (dict_del_string).

--- 2.0.38 2009/06/19

Improved estimated hits for AND operation (bug #2907)

Fixed problem with register area growing after "drop DB". (bug #2913).

--- 2.0.37 2009/05/18

Example with marc21 is now installed and part of packages.

Fixed XSL for OAI example.

Fixed problem with generic proximity handling.

Added new ranking handler: rank-2. This is a combination of rank-1 and
static rank.. The staticrank is inverse (lowest value comes first, etc..).
rank-2 thus substracts that from score. This allows a system to specify
a "base" rank (=staticrank).

--- 2.0.36 2009/02/17

Added implementation-codes directive for .mar files.

Avoid error for missing recordId when zebraidx' option -s is in use.

Fixed problem with some disk blocks not beeing freed correctly when
'drop database' is used.

--- 2.0.34 2008/11/06

Facets can now be performed on sort registers (:s), not just regular indexes
(:w, :p) etc.. The performance appers to be much better than before.

Added a facility to embed metadata for records generated by the DOM XML
filter. The meta data step is triggered by a 'process-meta' section in the
retrieve section of the dom config, e.g.
  <retrieve name="myelementset">
    <xslt stylesheet="my-usual.xsl"/>
    <process-meta/>
  </retrieve>
The meta section substitutes metadata for all elements called 'meta' in
namespace http://indexdata.com/zebra-2.0 . The meta element must have
exactly one attribute, name, which specifies the special
element set name which is equivalent to the suffix to zebra:: for
non-embedded special retrievals. This allows snippets, facets etc to be
included.

Fixed bug #2202: incorrect sorting order when searching multiple databases.

--- 2.0.32 2008/06/06

Fixed OAI example.

--- 2.0.30 2008/05/14

Changed service name for Windows. Bug #978.

Fixed the alwaysmatches including _ALLRECORDS for ICU term indexing. Bug #2139.

--- 2.0.28 2008/04/03

Handle right-truncation for ICU normalized terms.

Updated OAI-PMH example.

--- 2.0.26 2008/01/28 

Fixes for searches on Chinese text.

Fixes for scan using ICU indexing terms.

--- 2.0.24 2008/01/18 

Fixed some memory violations for ICU enabled indexing that could be
triggered by long phrases.

Enable ICU on Windows. Thanks to Tumer Garip for makefile patches.

Fixed bug #2002: Zebra crashes during merge using ICU indexing.

--- 2.0.22 2007/12/20

Handle encoding errors for strings passed to ICU. (assert was
thrown earlier).

Added zebraidx command, adelete, which attempts to delete records.
It's like 'delete', but does not fail if a record does not exist.

--- 2.0.20 2007/12/19

Added experimental support for faceted results. This is implemented
as a special retrieval on a result set and is triggered using element
set name zebra::facet::f1:t1,f2,t2,.. which will return terms and
hit counts for field f1, type t1, field f2, type t2, .. The returned
data is packed as XML or SUTRS depending on record syntax.

Added support for Unicode-based indexing using ICU. This allows
locale specific scanning, sorting. The implementation is based on
the ICU utility part of YAZ 3.0.16 and later. See the manual as well
as the examples/marcxml for an example of the use of ICU.

--- 2.0.18 2007/09/19

Fixed bug with scan and staticrank enabled. Bug introduced in 2.0.16.

--- 2.0.16 2007/09/12

Scan now returns a displayTerm which closer to the original word/phrase
from original record.

Added snippet support. Element set name zebra::snippet will make
Zebra return an XML record with snippets (terms around matching terms).

Fixed bug #1142: Non-indexed but listed attributes issues diagnostic.

Fixed bug #1131: Missing value-of data in DOM filter.

Fixed bug #1049: zebra.cfg lines with leading space are ignored.

Fixed bug #1128: sortmax not honored.

Fixed bug #1121: Crash for some searches with customized string.chr.

--- 2.0.14 2007/05/09

Zebra uses the YAZ 3 API. Note that this changes the Zebra API
as well. The register layout is the same however. 

Fixed bug #1114: scan within set may use excessive CPU.

Fixed memory leak that occurred in scan.

Fixed memory leak that occurred for each deleted record.

Optimize updates of records where content is almost identical to previous
version of record. This makes updating of the internal explain database
faster too.

For RPN queries the index type (w,p,..) may be specified verbatim as
structure attribute with string value, e.g. @attr 4=w .

Changed record update API . It is now handled by function
zebra_record_update which does insert/replace/delete/update of records .
This function replaces zebra_record_{insert,delete} and
zebra_admin_exchange_record. The DOM filter uses this feature and the
@type attribute in record element specifies the action
insert/replace/delete/update.

Added support for multi-record updates (Bug #944). Based on patch from
Hans-Werner Hilse.

--- 2.0.12 2007/03/07

Fixed bug with indexing of attributes for rec.grs-class of filters.
If X-Path was enabled xelm a/@b would be ignored.

Fixed bug in register system where 'no more space' messages was produced
even though there was plenty of space.

Fixed bug #884: Entity declarations in input are lost at retrieval time.

Implemented new filter 'dom'. See test/xslt/dom-config*xml for examples. 
This, like alvis, performs indexing and retrieval using XSLT. But Unlike
alvis, it allows multiple XSLT steps to be performed and does ISO2709
reading. Bug #843.

--- 2.0.10 2007/01/24

Staticrank indexing is now an index register type defined in default.idx
via directive 'staticrank'. The 'staticrank' directive for grs is no longer
supported (was only implemented for Zebra 2.0.8).

For searches, allow truncmax value to be controlled with attribute 13.
If given, that overrides the value of 'truncmax'.

For truncations being limited (abort at truncmax terms), zebrasrv returns
SearchResponse with resultSetStatus=subset.

For estimated hit counts, zebrasrv returns SearchResponse with 
resultSetStatus=estimate.

--- 2.0.8 2007/01/15

For searches, do not truncate more than at most 'truncmax' terms in one
single term with right-truncation/regular attribute. By default, 'truncmax',
is 10000.

Bug #781: Easier tracking of result sets. We only do this when mkstemp
is available (most moderun Unixes supports this). The PID is included
in filename : tempdir/zrs_PID_XXXXXX.

Added support for specification of staticrank for grs-class of filters.
This is enabled by using 'staticrank indexname' in .abs. Contents of
indexname (elm ... indexname:w) is then used as value for staticrank.

Implemented sorting via the ISAMB system. To enable, use sortindex:i in
zebra.cfg.

Added special retrieval support for sort keys. These keys can also be
fetched using zebra::index:field:s   

Added support for specification of approximative limits for whole query.
This is specified as attribute type 12. Semantics is the same as
estimatehits in zebra.cfg.

--- 2.0.6 2006/11/28

Fixed bug #736: Updates gets slower.

Fixed bug #735: Delete fails to process rest of file after a record that
does not exist,

Added RPM package for Zebra 2.

Improved indexing speed for large documents.

Added support for special utility retrieval zebra:: which offers retrieval
of fundamental properties for record, such as indexed terms, raw record,
and system record ID.

--- 2.0.4 2006/10/16

Fixed bug #47: Commit needs to check for roll-back.

Fixed bug #672: Trailing characters in password are ignored

Added extra presence check for tcl.h, because some systems have
tclConfig.sh installed even though Tcl C headers are missing.

Optimized melm performance.

Do not use sync(2) during commit (but rely on sync'd individual files).

Fixed bug in ISAMB's utility function decode_ptr. With gcc -O3 on some
platforms the src argument was not updated. Problem was compiler
optimization due to strict aliasing rules.

--- 2.0.2 2006/09/22

Bug fixes: #638, #647, #657, #669.

Implement skip of 0 hit counts in scan. Useful for scan operations
limited by a result set.

Honor position attribute, i.e. allow first-in-field search. To
enable this, "firstinfield 1" must be given for an index in
default.idx. Enabled in tab/default.idx for w. At this stage
first-in field is supported for phrase/and-list/or-list searches

Common stream reader interface for record filters (struct ZebraRecStream).

Debian package fix: packages idzebra-2.0 + libidzebra-2.0-modules did
not depend properly on sub packages.

--- 2.0.0 2006/08/14

New record filter (record type) 'alvis' which uses XSLT transformations
to drive both indexing as well as retrieval. See example configuration in the
'example/alvis-oai' directory.

'isamb' is now the default ISAM system. In Zebra 1.3, the default ISAM was
'isamc'. The type used can still be configured with the 'isam' setting
in 'zebra.cfg'.

Index structure is now 64-bit based, also on 32 bit systems. 
There are no more 2GB register file limits.

Extended search result tuning. Approximate limit for terms can be enabled
and specified with attribute 11. The (approx or exact) hit count is returned
as part of the search response as in 1.3 series. The subqueryID of a search
term hit count can be specified with attribute 10.

Zebra uses string attributes for indexing internally. Using set+numeric
use attribute can still be used. This is a search-only conversion which
inspects '*.att'-set files as indicated using attset-directives in 'zebra.cfg'.
'attset' references are no longer required, but when used they deserve
as "check" for that the index names used are also present in '*.att'.

Zebra record filters (record type handlers) may be built as loadable
modules (.so's) on Unix. In particular the Zebra 2.0 Debian package uses
separate packages for each of them. This also means that zebra programs
such as zebraidx is no longer depending on Tcl/other..

Documentation updates, especially on query structure and syntax, SRU, 
XSLT support, alvis filter module, and many added examples.

Improved logging of the 'zebrasrv' and 'zebraidx' binaries.

Improved debian package structure.

--- 1.3.16 2004/08/16
