+--- 1.6.35 2013/09/23
+
+New target setting: pz:authentication_mode. PAZ-896
+
+pazpar2 PRM: pazpar2 runs as user nobody. PAZ-893
+
+Strip #-suffix for ZOOM URLs. PAZ-892
+
+--- 1.6.34 2013/08/30
+
+Fix issue with hanging show/bytarget. Could happen if new search was
+fired with filter before show from previous show completed.
+
+Add 'date' handling for solr-pz2.xsl.
+
+--- 1.6.33 2013/08/13
+
+pz:authentication may carry user group password. If pz:authentication
+has at least one blank in it, that forces Pazpar2 to use idPass Z39.50
+authentication. Two forms are allowed
+ user password
+ user group password
+If no blanks are present, open authentication is in use (as before).
+
+Fix {prev,next}recid elements that are returned by record
+command. These were incorrect in versions 1.6.23 thru 1.6.32.
+
+--- 1.6.32 2013/06/14
+
+Experimental support for snippets. If argument snippets=1 is given
+for command record or show, the text will include <match>-tags for
+those area that matches.
+
+Fix memory leak WRT client structures (incorrect inc ref count).
+
+Log when a HTTP response is serialized and the time elapsed.
+
+New command, service, which returns current service XML in use for
+session.
+
+--- 1.6.31 2013/05/24
+
+Local limit for fields of type "generic" (ie text fields) are
+now normalized by mergekey rule before comparison takes place.
+Before, no normalization took place and comparsion was, thus, exact.
+
+New facility: dynamic rank , which allows ranking to be changed
+for an existing result set. The rank can be set for search or
+show. This overrides the rank for metadata elements (which fields
+to rank and weight).
+
+New facility:dynamic mergekey , which allows mergekey to be changed
+for an existing result set. The mergekey can be set for search or
+show.
+
+HTTP server: host=@ listens on IPV6 and IPV4 if possible.
+Also, allow ports to be given as names (not just integers).
+Fix @-notation on systems that don't support IPV6 sockets.
+
+--- 1.6.30 2013/04/26
+
+Add MasterKey Connect configuration. Refer to section "non-standard
+databases" for more information.
+
+Allow timeformat for log to be specified with option -m (as Metaproxy
+and YAZ GFS).
+
+New Debian package pazpar2-dbg.
+
+Fix NULL ptr reference of se->relevance. If a new search is initiated
+and a CCL query fails to parse, Pazpar2 could crash.
+
+Fix problem with host/port mangling in Pazpar2 HTTP server. Problem
+existed in 1.6.29 only.
+
+--- 1.6.29 2013/04/05
+
+IPV6 updates. Allow IPv6 addresses for database hosts and IPv6 address
+for HTTP server. By default the HTTP server uses IPv4 only, but that can be
+changed by setting "host" attribute for the "listen" element.
+
+Change semantics of pz:extendrecs. Allow for repeated fetches .
+pz:extendrecs is now the number of extra records to fetch (was total
+count before).
+
+--- 1.6.28 2013/03/21
+
+Fix hang or memory violation if show occurred before a search. (not that
+it makes much sense to perform a show before a search).
+
+--- 1.6.27 2013/03/08
+
+pz2.js: Element_parseChildNodes concatenates all Text/CDATA nodes, instead
+of the first child.
+
+--- 1.6.26 2013/03/08
+
+New pz:metadata attribute, empty="empty-value" for Pazpar2's
+internal representation. With this attribute, Pazpar2 treates an empty
+pz:metadata type as having the value for "empty" - if empty.
+
+New setting, pz:extendrecs, which triggers extended fetch of records
+for a database beyond pz:maxrecs for a show command.
+
+Fix warning that was falsely issued for "missing limitmap".
+
+Log message for Pazpart start/stop changed. Now using same style as
+Metaproxy, ie Pazpar2 start SHA1 / Pazpar2 stop .
+
+--- 1.6.25 2013/02/07
+
+Fix hang of 2nd command=show with esn/syntax given.
+
+--- 1.6.24 2013/01/18
+
+New merge attribute type: 'first', which takes all metadata fields
+from first target that returns the particular field.
+
+--- 1.6.23 2013/01/02
+
+Extend info command with hostname and YAZ SHA1
+Indent results for both command stat and info.
+
+Allow limit on merged content. The new configuration metadata
+element, limitcluster, configures that a metadata element (name) be used
+as limit name for search. Applies to the whole service (ie all targets),
+unlike pz:limitmap which is configured per-target (database).
+
+New feature: limitmap local:* matches against all metadata fields.
+
+Allow repeated list in limitmap spec . Separated by comma. For
+example: value="local:title,rpn:@attr 1=4".
+
+New element <message> in bytarget response. Holds diagnostic message
+of code (say 'Unsupported Use Attribute' for Bib-1 114).
+
+Improved logging for record ingestion failures.
+
+Avoid using struct icu_chain in non-YAZ_HAVE_ICU mode. In the rare case,
+when YAZ is compiled without ICU support.
+
+--- 1.6.22 2012/10/11
+
+Requires YAZ-4.2.40 to support native solr support.
+
+Fix and improve logic handling whether or not to re-do search on sort
+order changes. A sort order with change in ascending/descending only
+whould not trigger a new search, which is required for targets with
+native sorting capabilities. Each client is now checked if instructions
+(sortmap) exist for native sorting and only client that does requires
+it is researched. Other clients is just re-ingesting the records,
+they already have. The resultset is now cleared if any researching
+is done.
+
+Connection sharing between session has broken since version 1.6.8 with
+introduction of logic that would minimize searching if pazpar2 could
+detect this based on same query and limits and partly sort order.
+This could lead to segementations violations.
+
+Added a chapter in the manaul about relevance ranking.
+
+--- 1.6.21 2012/09/24
+
+Rank tweak: follow=number will increase mult by number if two terms
+occur next to each other; number-1 if they are one term apart , .. 0
+if they are number a part (all in order). Default is 0 (following
+terms has no effect).
+
+Rank tweak: lead=k will divide mult by 1 + log2(1+k*l) where k is
+value given by lead and l is length from beginning of field where
+term occurs (l=0 for first term, l=1 for second term, ..). Default
+value of k is 0.0.
+
+Rank tweak: length=strategy. length="linear" if mult is to be divided
+by length (existing, default behavior), length="log" if mult is to be
+divided by log2(1+length), length="none" if mult is not to be affected
+by length.
+
+--- 1.6.20 2012/09/21
+
+Rank algorithm details may be printed as part of show response in
+element <relevance_info>.. This is only printed if <rank debug="yes"/>
+is used in service.
+
+Record as returned by show/record command have a minimal indentation
+which makes things human-readable.
+
+New configuration of default sorting criteria (sort-default) in
+service definition. If no criteria is defined it will be as before
+'relevance'.
+
+Search command now supports sort parameter just as the show command.
+If no parameter is give, it will use the service sort-default value.
+
+--- 1.6.19 2012/09/18
+
+Rank algorithm skips strings that gets normalized to empty string.
+For example, & and ! could map to the empty string. The weight for
+those terms is now 0 (as if they were not part of the query).
+
+Rank algorithm does not use CCL from limitmap; only from the query
+parameter (user query).
+
+Obey -w dir.
+
+--- 1.6.18 2012/09/17
+
+Rank algorithm configurable by 'rank' element inside service. So far
+only, attribute 'cluster' is recognized. If cluster="yes", multiple
+records inside a cluster boosts higher than single records. This
+is default behavior and existing behavior. cluster="no" takes the
+average score of each record in a cluster.
+
+--- 1.6.17 2012/09/05
+
+Fix bad re-use of connections (connections with changing proxy should not
+be reused).
+
+--- 1.6.16 2012/08/22
+
+Fix a bug introduce in 1.6.15 around the position sorting. It resetted the
+resultset and sorting when the sort order is position. However this will be done on
+every client poll, which will make pazpar2 continuing reset and fetching.
+It should only be done on FIRST request where the sort order change.
+
+Fix an issue on suggestion option: Also disable suggestions on empty string.
+
+Clean up in turbo marc stylesheet.
+
+Remove the hardcoded size of termlists.
+
+--- 1.6.15 2012/06/27
+
+New facility: ccldirective may be given in service definition. Allows
+CCL parsing to be customized a bit, such as defining names of operators
+and, or, not.
+
+New facility: raw record by checksum, rather than offset. The record
+command optionally takes checksum which identifies certain record from
+a database.
+
+New facility: per field ranking. Rank may be given as M [F N] where
+M is default rank and N is rank for CCL terms from field F.
+
+--- 1.6.14 2012/06/04
+
+Fix for IE7/8 in pz.js
+
+Applied patch from Giannis Kosmas on keepAlive, which also adds keepAlive to init response.
+
+Lower log level some places.
+
+Remove some invalid test results.
+
+--- 1.6.13 2012/05/23
+
+Introducing a version=2 parameter for show, termlist and bytarget commands.
+This enables pazpar2 to return approximation on hit and count count when
+doing record filtering using the limit parameter on search and a
+limitmap with a value of "local:"
+
+Setting pz:xslt may embed local XSLT as an alternative to referring
+to filenames.
+Value is not CDATA but XML nodes embedded, so escaping is not necessary
+but a root element *must* be present. For example:
+<settings target="target="z3950.indexdata.com/marc">
+ <set name="pz:xslt">
+ <xsl:stylesheet
+ version="1.0"
+ ..
+ </xsl:stylesheet>
+ </set>
+ </settings>
+
+Metadata field rank may given by XML internal document (pz:xslt
+result). If rank is not given, the rank from service description is
+used - as before.
+
+Metadata field can now configured a default limitmap and facetmap.
+Setting limitmap to "local:" would work for all kind of targets, but would
+prob. not be the optimal solution. But at least better than the default behavior
+of pazpar2 where no filtering is done.
+
+A service definition can now also contains <set/> that defines service-wide
+settings. These will override server-wide sets and will be overridded by
+settings.
+
+New setting, pz:present_chunk, that specifies number of records to fetch
+at a time. Zero will disable chunkation; will fetch max_records at once.
+
+--- 1.6.12 2012/03/14
+
+Revert the format change in termlist response, that could break
+some clients / UIs since they were expecting an (empty) element
+if no facet values was found.
+
+--- 1.6.11 2012/03/07
+
+Revert the behavior of returning errors when unable to block
+on termlist, bytarget and search, when unable to block due to
+other block. The client will now receive a regular response,
+but it will be logged in the server. A parameter (report) is
+added to change behavior to return error response or WARNING
+status message. Consider this "API" as private, as it is mostly
+untested and could be changed in future releases.
+
+Fix spell error in pz2.js fix in 1.6.10.
+
+New Marc2TurboMarc.xsl (contribution from Sven Porst).
+Can solve the missing marc21.xsl updates in some cases.
+
+tmarc.xsl: Simplify the 6xx to subject-long and fix 1-based
+substring (contribtion from Sven Porst)
+
+marc21.xsl: fix 1-based substring call
+
+tmarc.xsl and marc21.xsl: use 856$a as last option for electronic-text.
+
+Add test_termlist_block to test suite
+
+--- 1.6.10 2012/02/23
+
+Fix SEGV for invalid PQFs and SRU/SOLR targets
+Also refactor a bit the code that converts from PQF to SRU/SOLR queries.
+
+Fix pz2.js: "null object" due to change in in bytarget result XML.
+
+Fixes in tmarc.xsl: Subject-long shorten for extra commas only.
+Added this normalization to the other subject-long fields (d6xx),
+where it was missing.
+
+Fixes in marc21.xsl: Updated with most of the new tmarc.xsl.
+Still differences around medium and holdings. marc21.xsl is not
+longer active used by Index Data, and should be considered unsupported.
+Use tmarc.xsl instead.
+
+--- 1.6.9 2012/01/19
+
+Fix SEGV that could occur for failed connections.
+
+--- 1.6.8 2012/01/17
+
+Fix bug for command sort that could return no results for active clients
+(from previous search). This bug was present in 1.6.6-1.6.7.
+
+Fix bug in results that could include results that should have been
+filtered out. This bug was present in 1.6.6-1.6.7.
+
+--- 1.6.7 2011/12/23
+
+Fix bug introduced in 1.6.6 where a connection re-use could stall
+incoming requests.
+
+Local filtering may now specify a local metadata field, eg.
+ pz:limitmap:somefield[t]=local:otherfield
+
+--- 1.6.6 2011/11/25
+
+For search, when limit and or filtering is in place and search
+is identical to previous search, the result set is re-used and the
+target is not searched.
+
+Limits may work perform local filtering as well, by using "local:"
+for a limitmap.
+
+--- 1.6.5 2011/11/01
+
+Updated bytarget command to contain a suggestions element with misspelled
+words and suggestions to these. pz2.js has been updated to deliver this
+onwards as well. Only target that currently delivers this is the solr
+client in YAZ 4.2.18.
+
+--- 1.6.4 2011/10/28
+
+New service definition element, xslt, that allows an embedded stylesheet
+to be defined. This can be referred to from pz:xslt as an alternative to
+external files.
+
+New pz:sortmap:field setting for specifying hints on how to make
+a target natively sort on a field. This is used for command=show in
+conjunction with sort.
+
+New pz:url setting for specifying the actual URL for a target. When
+this is used the target ID is not used as URL anymore and the target ID
+may be almost any string (not including []).
+
+command=termlist without name parameter returns all termlists/facets.
+Previously if name parameter was omitted, only "subject" was returned.
+
+--- 1.6.3 2011/09/22
+
+Make termlist sorting stable. Terms with same frequency are now sorted by
+their display name. This makes a pretty display and improves our
+regression test because qsort is not a stable sort.
+
+New sort parameter value 'position'. The 'position' sorts merged records
+by their original position from the remote target. This is primarily useful
+for debugging and may be used for targets that already perform some kind
+of relevance ranking. Note that sort by default is decreasing; so to get
+records in their original order sort=position:1 must be used.
+
+--- 1.6.2 2011/09/15
+
+tmarc.xsl: yet another 773$g fix. Was broken in 1.6.1 as well.
+
+Facility to change working directory for pazpar2 daemon. Option -wdir
+sets working directory to dir. This facility is useful if core dumps
+must be saved. In this case, the current working directory must be
+writable by the running user, such as "nobody".
+
+--- 1.6.1 2011/09/14
+
+New configuration element <icu_chain> for <server>/<service> which
+allows a named ICU rule (chain) to be defined. The names relevance,
+sort, mergekey and facet are used for those operations. The definition
+ <icu_chain id="sort" locale="en"> .. </icu_chain>
+is identical to
+ <sort> <icu_chain locale="en> ... </icu_chain> </sort>
+And so on.. for relevance, mergekey and facet as well. The latter
+style is deprecated. The facet terms are normalized by the facet
+rule by default. This may be changed on a metadata field basis by
+defining the new attribute 'facetrule' for the metadata element.
+For example:
+ <icu_chain id="myrule" locale="en"> ... </icu_chain>
+ <metadata name="author" termlist="yes" facetrule="myrule"/>
+
+Preserve rorder for merged metadata. Fixes issue as reported by Sven
+Porst: http://lists.indexdata.dk/pipermail/yazlist/2011-July/003230.html
+
+tmarc.xsl: set journal-subpart to 773$ only.
+
+--- 1.6.0 2011/09/12
+
+Modify the behavior for the limit parameter (first defined in 1.5.7).
+Mapping of limit searches are now defined by the new configuration item
+pz:limitmap. Fix a dead-lock problem with the limit parameter.
+
+Extend tmarc.xsl to extract 773$g data (OpenURL).
+
+--- 1.5.7 2011/08/19
+
+ICU default maps remove backquote (`).
+
+Command 'search' takes limit parameter (optional). The limit parameter
+allows a search to be limited one or more facets and the corresponding
+values. This is for server side filtering.
+
+Configure tweak: Use -lm for log(3) if needed
+
+--- 1.5.6 2011/04/15
+
+Fix a problem with skiparticle sortkey that could be completely
+ignored (and reduced to "").
+
+Fix dependency problem in pazpar2 RPM package (did not require
+libyaz4 as it should).
+
+--- 1.5.5 2011/03/28
+
+Fix memory leak that occurred for command=termlist&name=xtargets .
+
+Pazpar2 may save HTTP requests. Enabled by option -R.
+
+--- 1.5.4 2011/03/08
+
+Experimental support for DTIC DADS target. New dads-pz2.xsl.
+
+Support for query_syntax (overrides the default for SRU | Z39.50)
+
+Support for extraArgs (ZOOM "extraArgs" option) for targets
+
+New commands: status-server and status-session
+
+--- 1.5.3 2011/02/18
+
+Fix for threaded runs: Client now have a copy of the database URL,
+which can used after the database has been release from the client.
+This makes the logging in the connection idle timeout of the client nicer (no NOURL) and should be thread-safe.
+
+tmarc.xsl: Add journal-title-abbrev and full text.
+
+cf.xsl: new fields: isbn, issn, journaltitle, volume, issue
+
+Fix for cmd=record before search.
+
+Session Logging clean up.
+
+Fix wrong termlist factor when maxrecs is different from 100.
+
+--- 1.5.2 2011/01/18
+
+Fix missing pz:termlist_term_factor in settings.c messed up pz:preferred.
+Term factor is default enabled but can be diseabled by
+pz:termlist_term_factor=0
+
+--- 1.5.1 2011/01/06
+
+Add scaling of facet count. Currently always enabled, needs fixing.
+Allow user-defined info for target suffix. This has no meaning in
+Pazpar2 except to distinguish targets from each other. The suffix
+data begins with #. For example z3950.indexdata.com/gils#Mydata
+
+Added exact-match recordfilter; format name=value
+
+--- 1.5.0 2010/10/05
+
+SOLR support. Pazpar2 may operate as web service client for SOLR.
+
+--- 1.4.4 2010/08/17
+
+Fix for show command and block=1 (dead lock). Bug was introduced in
+1.4.0.
+
+--- 1.4.3 2010/07/02
+
+New RPM packages: pazpar2, pazpar2-js, pazpar2-doc. These have been
+tested on CentOS 5.5 only.
+
+--- 1.4.2 2010/06/18
+
+Fix problem with result sets being removed from a client session
+if the connection for it was resused by another session. Bug #3489.
+
+New iphone UI for Pazpar2 (www/iphone).
+
+--- 1.4.1 2010/05/21
+
+Fixes for threaded operation.
+
+New stylesheets for TurboMARC: tmarc.xsl and opac_turbomarc.xsl.
+
+New example services in etc/services in source. In the Debian packages
+these are located in /etc/pazpar2/services-available
+
+Threaded mode operational on Windows. Requires Windows 7 or Windows
+Server 2008.
+
+Default value of setting pz:max_connections is 0 which means that there
+is no limit on number of connections.
+
+--- 1.4.0 2010/03/29
+
+Pazpar2 may operate in threaded mode. Enabled by element threads in
+the configuration. See pazpar2_conf for details.
+
+New setting setting: pz:max_connections. Setting pz:max_connections is
+a limit of number of sockets to a host. When this limit is reached,
+Pazpar2 will wait up to 5 seconds for a connection to becomes available.
+The client will be marked Client_Error when it can not be searched
+(other clients in a session may work). If pz:max_connections is not set
+for a target, a value of 30 will be used. Note: the pz:max_connections
+will only work in threaded mode.
+
+pz2.js: JSON support for show.
+
+Debian package: Enable default service, default.xml, before starting
+Pazpar2 only if there is no service already in /etc/pazpar2/services-enabled.
+
+--- 1.3.0 2010/01/25
+
+Debian version depends on on libyaz4. Note that Pazpar2 will still
+compile from source with YAZ 3.
+
+Split services into separate files. The example configuration file
+pazpar2.cfg.dist now includes a default service default.xml (part of
+etc). And default.xml includes settings/edu.xml. The default.xml file,
+not to be confused with settings/defaults.xml, is a template for jsdemo
+and other services. The Debian package installs /etc/pazpar2/server.xml
+which is now the main pazpar2 configuration (used to be called pazpar2.cfg).
+server.xml includes services from /etc/pazpar2/services-enabled/*.xml .
+The default.xml (from etc) is installed in /etc/pazpar2/services-available
+and a symlink to it is created from services-enabled. The default.xml
+service is unnamed and, thus, will be used by jsdemo and test1.
+
+New setting pz:negotiation_charset. Patch from Andrei V. Toutoukine. The
+new setting pz:negotiation_charset specifies character set for Z39.50 Init.
+
+--- 1.2.4 2010/01/15
+
+Support for additional fields in cf.xsl and pazpar2.conf.dist:
+publisher, available, due, location (=locallocation), callno
+(=callnumber), thumburl and score.
+
+Describe pz:xslt and the auto setting.
+
+Move mergekey definition away from the normalization stylesheets and
+define a mergekey common for all target types in pazpar2.cfg.
+
+Code update: Use the Odr_int type for hit counts. This is part of
+YAZ 3.0.47 and later and so configure checks for that.
+
+--- 1.2.3 2009/11/24
+
+Metadata attribute 'skiparticle' also works for ICU based
+normalization. (was only working for the non-ICU/ASCII before).
+
+Command bytarget with argument settings=1 will show settings per
+target.. This is to be able to verify correct settings and be able to
+test that they are correct. The database settings array size is now
+also stored.. Problems with database settings array is that if not
+careful it will be too small (smaller than dictionary per-service
+in settings).
+
+Make record list sorting stable by comparing mergekey for records if
+relevance/title or other sorting criteria all match. This is merely to
+ensure that our regressions tests works (reproducible output).
+
+Relevance calculation changes: use a different denominator (length) for
+per-field relevance scoring.. Instead of length of all ranked fields we
+now use length of individual fields (as if they were individual "free"
+text fields). This will ensure that documents with a long field with no
+match (say description) will not "hurt" a title match.
+
+Diagnostic member was not set on connection error. Fixed
+
+--- 1.2.2 2009/10/13
+
+Command search takes two optional parameters, startecs and maxrecs,
+that specifies the start offset (0, 1, ...) and maximum number of records
+to fetch for each target.
+
+XSLTs + MARC maps are cached within a session so we don't re-parse
+them over and over again. Even for a session with a single search
+there's much to be gained because many targets use the same
+transformation.
+
+The metadata attribute 'mergekey' now takes one of three values 'no',
+'required', 'optional' . And the resulting mergekey from metadata
+is now ordered in the same way as metadata in the service definition.
+Older Pazpar2 version use the order in which metadata appeared in a
+record instance.
+
+The search argument 'filter' now offers a new operator ~ which does a
+substring match. The = operator works as before: string match for
+anything but pz:id, or target match for pz:id.
+
+New setting pz:recordfilter. The value of this setting takes the
+form name[~value]. This setting makes Pazpar2 ignore all retrieved
+records that do not have the metadata element name with value substring
+(if given).
+