Merge branch 'master' of ssh://git.indexdata.com/home/git/pub/pazpar2
authorDennis Schafroth <dennis@indexdata.com>
Fri, 15 Jul 2011 13:58:53 +0000 (15:58 +0200)
committerDennis Schafroth <dennis@indexdata.com>
Fri, 15 Jul 2011 13:58:53 +0000 (15:58 +0200)
reset .cproject
Conflicts:
.cproject

49 files changed:
.cproject
.project
IDMETA
Makefile.am
NEWS
buildconf.sh
configure.ac
debian/ap2pazpar2-js.cfg
debian/changelog
debian/control
doc/pazpar2_conf.xml
etc/cf.xsl
etc/settings/opencontent-solr.xml [new file with mode: 0644]
etc/tmarc.xsl
js/pz2.js
m4
pazpar2.spec
rpm/pazpar2.init [new file with mode: 0755]
rpm/pazpar2.logrotate [new file with mode: 0644]
src/Makefile.am
src/client.c
src/connection.c
src/database.c
src/http_command.c
src/pazpar2.rpm.init [deleted file]
src/pazpar2.rpm.logrotate [deleted file]
src/pazpar2_config.c
src/pazpar2_config.h
src/session.c
src/session.h
src/settings.c
src/settings.h
src/zeerex.c [deleted file]
src/zeerex.h [deleted file]
test/test_facets.cfg
test/test_facets.sh
test/test_facets.urls
test/test_facets_11.res
test/test_facets_14.res
test/test_facets_17.res
test/test_facets_18.res
test/test_facets_24.res
test/test_http.cfg
test/test_preferred.cfg
test/test_solr.cfg
test/test_sru.cfg
test/test_turbomarcxml.cfg
win/makefile
www/jsdemo/example_client.js

index 6ab0e6b..be8b449 100644 (file)
--- a/.cproject
+++ b/.cproject
                                                        </tool>
                                                </toolChain>
                                        </folderInfo>
-                                       <folderInfo id="cdt.managedbuild.config.gnu.macosx.exe.debug.1350738082.48114312" name="/" resourcePath="src">
-                                               <toolChain id="cdt.managedbuild.toolchain.gnu.macosx.exe.debug.1120388387" name="MacOSX GCC" superClass="cdt.managedbuild.toolchain.gnu.macosx.exe.debug" unusedChildren="">
-                                                       <tool id="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug.407949997" name="MacOS X C Linker" superClass="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug.937721886"/>
-                                                       <tool id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug.2115682336" name="MacOS X C++ Linker" superClass="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug.301077445"/>
-                                                       <tool id="cdt.managedbuild.tool.gnu.assembler.macosx.exe.debug.1441890307" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.macosx.exe.debug.558303931">
-                                                               <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2113422069" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-                                                       </tool>
-                                                       <tool id="cdt.managedbuild.tool.gnu.archiver.macosx.base.341888168" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.macosx.base.1147822956"/>
-                                                       <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.macosx.exe.debug.791617477" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.macosx.exe.debug.1794369284"/>
-                                                       <tool id="cdt.managedbuild.tool.gnu.c.compiler.macosx.exe.debug.743084521" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.macosx.exe.debug.2080175189">
-                                                               <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1792646124" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-                                                       </tool>
-                                               </toolChain>
-                                       </folderInfo>
-                                       <sourceEntries>
-                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
-                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="test"/>
-                                       </sourceEntries>
                                </configuration>
                        </storageModule>
-                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-                       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
                        <storageModule moduleId="scannerConfiguration">
                                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
                                                </scannerInfoProvider>
                                        </profile>
                                </scannerConfigBuildInfo>
-                               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.macosx.exe.debug.1350738082;cdt.managedbuild.config.gnu.macosx.exe.debug.1350738082.48114312;cdt.managedbuild.tool.gnu.c.compiler.macosx.exe.debug.743084521;cdt.managedbuild.tool.gnu.c.compiler.input.1792646124">
-                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="makefileGenerator">
-                                                       <runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                               </scannerConfigBuildInfo>
                        </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+                       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
                </cconfiguration>
                <cconfiguration id="cdt.managedbuild.config.macosx.exe.release.397760623">
                        <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.macosx.exe.release.397760623" moduleId="org.eclipse.cdt.core.settings" name="Release">
                                        </folderInfo>
                                </configuration>
                        </storageModule>
-                       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
-                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
                        <storageModule moduleId="scannerConfiguration">
                                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                                <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
                                                </scannerInfoProvider>
                                        </profile>
                                </scannerConfigBuildInfo>
-                               <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.macosx.exe.debug.1350738082;cdt.managedbuild.config.gnu.macosx.exe.debug.1350738082.48114312;cdt.managedbuild.tool.gnu.c.compiler.macosx.exe.debug.743084521;cdt.managedbuild.tool.gnu.c.compiler.input.1792646124">
-                                       <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="makefileGenerator">
-                                                       <runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                                       <profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-                                               <buildOutputProvider>
-                                                       <openAction enabled="true" filePath=""/>
-                                                       <parser enabled="true"/>
-                                               </buildOutputProvider>
-                                               <scannerInfoProvider id="specsFile">
-                                                       <runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
-                                                       <parser enabled="true"/>
-                                               </scannerInfoProvider>
-                                       </profile>
-                               </scannerConfigBuildInfo>
                        </storageModule>
+                       <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+                       <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
                </cconfiguration>
        </storageModule>
        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
index 2663f18..009a45b 100644 (file)
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-       <name>pazpar2.master</name>
+       <name>pazpar2</name>
        <comment></comment>
        <projects>
        </projects>
                                        <value>make</value>
                                </dictionary>
                                <dictionary>
-                                       <key>org.eclipse.cdt.make.core.buildLocation</key>
-                                       <value>${workspace_loc:/pazpar2.master/Debug}</value>
-                               </dictionary>
-                               <dictionary>
                                        <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
                                        <value>clean</value>
                                </dictionary>
diff --git a/IDMETA b/IDMETA
index 423a6de..86664dc 100644 (file)
--- a/IDMETA
+++ b/IDMETA
@@ -1,2 +1,2 @@
-DEBIAN_DIST="squeeze lenny"
-UBUNTU_DIST="maverick lucid karmic"
+DEBIAN_DIST="wheezy squeeze lenny"
+UBUNTU_DIST="natty maverick lucid karmic"
index a485e2b..85fbc8b 100644 (file)
@@ -13,6 +13,8 @@ dist-hook:
        for d in etc etc/settings etc/services www/test1 www/jsdemo www/iphone; do \
                mkdir -p $(distdir)/$$d; cp -r $$d/* $(distdir)/$$d; \
        done; rm -f $(distdir)/etc/pazpar2.cfg; exit 0
+       mkdir $(distdir)/rpm
+       -cp $(srcdir)/rpm/* $(distdir)/rpm
 
 .PHONY:debian
 debian:
diff --git a/NEWS b/NEWS
index 053cfe5..e93ed19 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+--- 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 .
index 9671592..82bd895 100755 (executable)
@@ -113,12 +113,9 @@ Or just build the Debian packages without configuring
   dpkg-buildpackage -rfakeroot
 
 When building from Git, you need these Debian packages:
-  autoconf, automake, libtool, gcc, bison, any tcl,
-  xsltproc, docbook, docbook-xml, docbook-xsl,
-  libxslt1-dev, libssl-dev, libreadline5-dev, libwrap0-dev,
-  libpcap0.8-dev, pkg-config
-
-Also perhaps: libgnutls-dev libicu-dev
+  autoconf automake libtool gcc tcl8.4
+  xsltproc docbook docbook-xml docbook-xsl
+  libxslt1-dev libgnutls-dev libreadline5-dev libicu-dev
 
 And if you want to make a Debian package: dpkg-dev fakeroot debhelper
 (Then run "dpkg-buildpackage -rfakeroot" in this directory.)
index 2908aea..4ae0cdd 100644 (file)
@@ -5,7 +5,7 @@
 
 # Autoconf and automake setup
 AC_PREREQ(2.60)
-AC_INIT([pazpar2],[1.5.5],[pazpar2-help@indexdata.dk])
+AC_INIT([pazpar2],[1.5.6],[pazpar2-help@indexdata.dk])
 
 AC_CONFIG_HEADERS(src/config.h)
 
@@ -22,12 +22,13 @@ AC_LANG(C)
 
 AC_C_INLINE
 
-YAZ_INIT([static icu],[4.1.0])
+YAZ_INIT([static icu],[4.2.0])
 if test -z "$YAZLIB"; then
        AC_MSG_ERROR([YAZ development libraries missing])
 fi
 YAZ_DOC
 
+AC_SEARCH_LIBS([log],[m])
 AC_CHECK_HEADERS([sys/time.h sys/socket.h unistd.h netinet/in.h netdb.h arpa/inet.h])
 checkBoth=0
 AC_CHECK_FUNC([connect])
@@ -40,9 +41,7 @@ if test "$checkBoth" = "1"; then
     AC_CHECK_FUNC([accept], , [LIBS=$oldLibs])
 fi
 AC_CHECK_FUNC([gethostbyname], ,[AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"])])
-AC_CHECK_FUNCS([getaddrinfo])
-
-AC_CHECK_FUNCS([mallinfo])
+AC_CHECK_FUNCS([getaddrinfo mallinfo])
 
 if test -d ${srcdir}/.git; then
        sha=`git show --pretty=format:%H|head -1`
index 99ee4f9..0ad4c51 100644 (file)
@@ -1,3 +1,5 @@
-Alias /pazpar2 /usr/share/pazpar2
-
+# Note: this alias is a global defintion and will override any alias 
+# configuration for virtual hosts. Uncommend this line if you want 
+# configure the alias inside a <VirtualHost> directive!
 
+Alias /pazpar2 /usr/share/pazpar2
index 31f83d6..4cde1a3 100644 (file)
@@ -1,3 +1,9 @@
+pazpar2 (1.5.6-1indexdata) unstable; urgency=low
+
+  * Upstream.
+
+ -- Adam Dickmeiss <adam@indexdata.dk>  Fri, 15 Apr 2011 11:42:25 +0000
+
 pazpar2 (1.5.5-1indexdata) unstable; urgency=low
 
   * Upstream.
index 012da1a..94cdd50 100644 (file)
@@ -2,7 +2,7 @@ Source: pazpar2
 Section: net
 Priority: extra
 Maintainer: Adam Dickmeiss <adam@indexdata.dk>
-Build-Depends: debhelper (>= 5), autotools-dev, libyaz4-dev (>= 4.1.0), docbook-xsl, libgnutls-dev
+Build-Depends: debhelper (>= 5), autotools-dev, libyaz4-dev (>= 4.2.0), docbook-xsl, libgnutls-dev
 Standards-Version: 3.7.2
 
 Package: pazpar2
index 1f7501e..9e75b48 100644 (file)
     </varlistentry>
     
     <varlistentry>
-     <term>pz:termlist_term_count</term>
-     <listitem>
-      <para>
-       Specifies that the target should return up to n terms for each facets (where termlist="yes"). This implies 
-       that the target can return facets on the search command. Requesting facets on targets that doesn't, 
-       will return unpredictable or error result.
-      </para>
-     </listitem>
-    </varlistentry>
-
-    <varlistentry>
-     <term>pz:termlist_term_sort</term>
+     <term>pz:preferred</term>
      <listitem>
       <para>
-       Specifies how the terms should be sorted. (Not yet implemented)
+       Specifies that a target is preferred, e.g. possible local, faster target. Using block=pref on show command  
+       will wait for all these targets to return records before releasing the block. If no target is preferred, 
+       the block=pref will identical to block=1, which release when one target has returned records.     
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term>pz:preferred</term>
+     <term>pz:block_timeout</term>
      <listitem>
       <para>
-       Specifies that a target is preferred, e.g. possible local, faster target. Using block=pref on show command  
-       will wait for all these targets to return records before releasing the block. If no target is preferred, 
-       the block=pref will identical to block=1, which release when one target has returned records.     
+       (Not yet implemented). Specifies the time for which a block should be released anyway.      
       </para>
      </listitem>
     </varlistentry>
 
     <varlistentry>
-     <term>pz:block_timeout</term>
+     <term>pz:facetmap:<replaceable>name</replaceable></term>
      <listitem>
       <para>
-       (Not yet implemented). Specifies the time for which a block should be released anyway.      
+       Specifies that for field <replaceable>name</replaceable>, the target
+       supports (native) facets. The value is the name of the
+       field on the target.
       </para>
+      <note>
+       <para>
+         At this point only SOLR targets have been tested with this
+         facility.
+       </para>
+      </note>
      </listitem>
     </varlistentry>
     
index fc18204..1c3c053 100644 (file)
     </pz:metadata>
   </xsl:template>
 
+  <xsl:template match="page">
+    <pz:metadata type="page">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
+  <xsl:template match="endpage">
+    <pz:metadata type="endpage">
+      <xsl:value-of select="."/>
+    </pz:metadata>
+  </xsl:template>
+
   <xsl:template match="item">
     <pz:metadata type="locallocation">
       <xsl:choose>
diff --git a/etc/settings/opencontent-solr.xml b/etc/settings/opencontent-solr.xml
new file mode 100644 (file)
index 0000000..0e3d3af
--- /dev/null
@@ -0,0 +1,38 @@
+<settings target="opencontent-solr.index:8984/solr">
+  <set name="pz:name" value="opencontent-solr"/>
+  
+  <set name="pz:apdulog" value="1"/>
+  <!-- mapping for unqualified search -->
+  <set name="pz:cclmap:term" value="1=title"/>
+  
+  <!-- field-specific mappings -->
+  <set name="pz:cclmap:au"   value="1=author" />
+  <set name="pz:cclmap:ti"   value="1=title"  />
+  <set name="pz:cclmap:su"   value="1=subject"/>
+  <set name="pz:cclmap:isbn" value="1=isbn" />
+  <set name="pz:cclmap:issn" value="1=issn" />
+  <set name="pz:cclmap:date" value="1=date" />
+
+  <!-- Retrieval settings -->
+
+  <set name="pz:sru" value="solr"/>
+  <set name="pz:requestsyntax" value="tmarc"/>
+
+  <!-- Termlist/facet settings -->
+  <set name="pz:termlist_term_count" value="0"/>
+  <set name="pz:termlist_term_sort" value="1"/>
+
+  <set name="pz:facetmap:date" value="date"/>
+  <set name="pz:facetmap:subject" value="subject_exact"/>
+  <set name="pz:facetmap:author" value="author_exact"/>
+  <!-- Result normalization settings -->
+
+  <set name="pz:nativesyntax" value="txml"/>
+  <set name="pz:xslt" value="solr-pz2.xsl"/>
+</settings>
+<!-- Keep this comment at the end of the file
+     Local variables:
+     mode: nxml
+     End:
+-->
+
index e6bec43..10f10b2 100644 (file)
       </xsl:choose>
     </xsl:variable>
 
+    <xsl:variable name="date_008">
+      <xsl:choose>
+        <xsl:when test="contains('cestpudikmr', substring(tmarc:c008, 7, 1))">
+          <xsl:value-of select="substring(tmarc:c008, 8, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
+    <xsl:variable name="date_end_008">
+      <xsl:choose>
+        <xsl:when test="contains('dikmr', substring(tmarc:c008, 7, 1))">
+          <xsl:value-of select="substring(tmarc:c008, 12, 4)" />
+        </xsl:when>
+      </xsl:choose>
+    </xsl:variable>
+
     <pz:record>
 <!--
       <xsl:attribute name="mergekey">
         </pz:metadata>
       </xsl:for-each>
 
+      <xsl:if test="$date_008 and not(tmarc:d260)">
+        <pz:metadata type="date">
+          <xsl:choose>
+            <xsl:when test="$date_end_008">
+              <xsl:value-of select="concat($date_008,'-',$date_end_008)" />
+            </xsl:when>
+            <xsl:otherwise> 
+              <xsl:value-of select="$date_008" />
+            </xsl:otherwise>
+          </xsl:choose>
+        </pz:metadata>
+      </xsl:if>
+
+
       <xsl:for-each select="tmarc:d130">
         <pz:metadata type="title-uniform">
           <xsl:value-of select="tmarc:sa" />
         </xsl:if>
       </xsl:for-each>
 
+      <xsl:for-each select="tmarc:d876">
+        <xsl:if test="tmarc:sf">
+          <pz:metadata type="loan-period">
+            <xsl:value-of select="tmarc:sf" />
+          </pz:metadata>
+        </xsl:if>
+      </xsl:for-each>
+
       <pz:metadata type="medium">
         <xsl:value-of select="$vmedium" />
        <xsl:if test="string-length($electronic) and $vmedium != 'electronic'">
index 8aab9bf..c256800 100644 (file)
--- a/js/pz2.js
+++ b/js/pz2.js
@@ -226,7 +226,7 @@ pz2.prototype =
         var context = this;
         var request = new pzHttpRequest(this.pz2String, this.errorHandler);
         request.safeGet(
-            { "command": "ping", "session": this.sessionID },
+            { "command": "ping", "session": this.sessionID, "windowid" : window.name },
             function(data) {
                 if ( data.getElementsByTagName("status")[0]
                         .childNodes[0].nodeValue == "OK" ) {
@@ -271,14 +271,15 @@ pz2.prototype =
         else
             var start = 0;
 
-       var searchParams = { 
-            "command": "search",
-            "query": this.currQuery, 
-            "session": this.sessionID 
+             var searchParams = { 
+          "command": "search",
+          "query": this.currQuery, 
+          "session": this.sessionID,
+          "windowid" : window.name
         };
        
         if (filter !== undefined)
-           searchParams["filter"] = filter;
+               searchParams["filter"] = filter;
 
         // copy additional parmeters, do not overwrite
         if (addParamsArr != undefined) {
@@ -322,7 +323,7 @@ pz2.prototype =
         var context = this;
         var request = new pzHttpRequest(this.pz2String, this.errorHandler);
         request.safeGet(
-            { "command": "stat", "session": this.sessionID },
+            { "command": "stat", "session": this.sessionID, "windowid" : window.name },
             function(data) {
                 if ( data.getElementsByTagName("stat") ) {
                     var activeClients = 
@@ -379,7 +380,8 @@ pz2.prototype =
             "num": this.currentNum, 
             "sort": this.currentSort, 
             "block": 1,
-            "type": this.showResponseType
+            "type": this.showResponseType,
+            "windowid" : window.name
           },
           function(data, type) {
             var show = null;
@@ -453,7 +455,8 @@ pz2.prototype =
        var recordParams = { 
             "command": "record", 
             "session": this.sessionID,
-            "id": this.currRecID 
+            "id": this.currRecID,
+            "windowid" : window.name
         };
        
        this.currRecOffset = null;
@@ -541,7 +544,8 @@ pz2.prototype =
             { 
                 "command": "termlist", 
                 "session": this.sessionID, 
-                "name": this.termKeys 
+                "name": this.termKeys,
+                "windowid" : window.name
             },
             function(data) {
                 if ( data.getElementsByTagName("termlist") ) {
@@ -618,7 +622,7 @@ pz2.prototype =
         var context = this;
         var request = new pzHttpRequest(this.pz2String, this.errorHandler);
         request.safeGet(
-            { "command": "bytarget", "session": this.sessionID },
+            { "command": "bytarget", "session": this.sessionID, "windowid" : window.name},
             function(data) {
                 if ( data.getElementsByTagName("status")[0]
                         .childNodes[0].nodeValue == "OK" ) {
diff --git a/m4 b/m4
index f7d7eb4..96ff03f 160000 (submodule)
--- a/m4
+++ b/m4
@@ -1 +1 @@
-Subproject commit f7d7eb4b44b7fdad1942e32856d6afc2e6dcabda
+Subproject commit 96ff03f91b4539e315dadd50ab2564412c076394
index 142923a..ea255bd 100644 (file)
@@ -1,24 +1,23 @@
 Summary: Metasearcher
 Name: pazpar2
-Version: 1.5.5
+Version: 1.5.6
 Release: 1indexdata
 License: GPL
 Group: Applications/Internet
 Vendor: Index Data ApS <info@indexdata.dk>
 Source: pazpar2-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
-BuildRequires: libyaz4-devel
+BuildRequires: libyaz4-devel >= 4.2.0
 Packager: Adam Dickmeiss <adam@indexdata.dk>
 URL: http://www.indexdata.com/pazpar2
+Summary: pazpar2 daemon
+Requires: libyaz4
 
 %description
 Pazpar2 is a high-performance, user interface-independent, data
 model-independent metasearching middleware featuring merging, relevance
 ranking, record sorting, and faceted results.
 
-Summary: pazpar2 daemon
-Requires: libyaz4
-
 %package -n pazpar2-js
 Summary: pazpar2 JS
 Group: Data
@@ -83,10 +82,10 @@ cp etc/services/*.xml ${RPM_BUILD_ROOT}/etc/pazpar2/services-available/
 cp etc/settings/*.xml ${RPM_BUILD_ROOT}/etc/pazpar2/settings/
 cp etc/*.xsl ${RPM_BUILD_ROOT}/etc/pazpar2/
 mkdir -p ${RPM_BUILD_ROOT}/etc/rc.d/init.d
-install -m755 src/pazpar2.rpm.init ${RPM_BUILD_ROOT}/etc/rc.d/init.d/pazpar2
+install -m755 rpm/pazpar2.init ${RPM_BUILD_ROOT}/etc/rc.d/init.d/pazpar2
 echo "Alias /pazpar2 /usr/share/pazpar2" >${RPM_BUILD_ROOT}/etc/pazpar2/ap2pazpar2-js.cfg
 mkdir -p ${RPM_BUILD_ROOT}/etc/logrotate.d
-install -m644 src/pazpar2.rpm.logrotate ${RPM_BUILD_ROOT}/etc/logrotate.d/pazpar2
+install -m644 rpm/pazpar2.logrotate ${RPM_BUILD_ROOT}/etc/logrotate.d/pazpar2
 
 %clean
 rm -fr ${RPM_BUILD_ROOT}
diff --git a/rpm/pazpar2.init b/rpm/pazpar2.init
new file mode 100755 (executable)
index 0000000..c57d9e4
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+#
+# pazpar2      Startup script for Pazpar2
+#
+# chkconfig: 2345 85 15
+# description: Pazpar2 Metasearcher
+# processname: pazpar2
+# config: /etc/pazpar2/server.xml
+# config: /etc/sysconfig/pazpar2
+# pidfile: /var/run/pazpar2.pid
+
+# Source function library.
+OPTIONS="-l /var/log/pazpar2.log -f /etc/pazpar2/server.xml"
+. /etc/rc.d/init.d/functions
+
+if [ -f /etc/sysconfig/pazpar2 ]; then
+        . /etc/sysconfig/pazpar2
+fi
+
+# Path to the apachectl script, server binary, and short-form for messages.
+DAEMON=${DAEMON-/usr/sbin/pazpar2}
+prog=pazpar2
+pidfile=${PIDFILE-/var/run/pazpar2.pid}
+lockfile=${LOCKFILE-/var/lock/subsys/pazpar2}
+RETVAL=0
+
+start() {
+        echo -n $"Starting $prog: "
+        daemon --pidfile=${pidfile} $DAEMON $OPTIONS -D -p ${pidfile}
+        RETVAL=$?
+        echo
+        [ $RETVAL = 0 ] && touch ${lockfile}
+        return $RETVAL
+}
+
+stop() {
+       echo -n $"Stopping $prog: "
+       killproc -p ${pidfile} -d 10 $DAEMON
+       RETVAL=$?
+       echo
+       [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
+}
+reload() {
+    stop
+    start
+}
+
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  status)
+        status -p ${pidfile} $DAEMON
+       RETVAL=$?
+       ;;
+  restart)
+       stop
+       start
+       ;;
+  condrestart)
+       if [ -f ${pidfile} ] ; then
+               stop
+               start
+       fi
+       ;;
+  reload)
+        reload
+       ;;
+  configtest)
+       $DAEMON $OPTIONS -t
+       RETVAL=$?
+       ;;
+  *)
+       echo $"Usage: $prog {start|stop|restart|help|configtest}"
+       exit 1
+esac
+
+exit $RETVAL
diff --git a/rpm/pazpar2.logrotate b/rpm/pazpar2.logrotate
new file mode 100644 (file)
index 0000000..b2bd6fb
--- /dev/null
@@ -0,0 +1,13 @@
+/var/log/pazpar2.log {
+       weekly
+       missingok
+       rotate 4
+       compress
+       delaycompress
+       notifempty
+       postrotate
+               if [ -f /var/run/pazpar2.pid ]; then
+                       /sbin/service pazpar2 restart > /dev/null
+               fi
+       endscript
+}
index c956188..1b18290 100644 (file)
@@ -3,8 +3,6 @@
 sbin_PROGRAMS = pazpar2
 noinst_PROGRAMS = pazpar2_play
 
-EXTRA_DIST = pazpar2.rpm.init pazpar2.rpm.logrotate
-
 check_PROGRAMS = \
       test_sel_thread \
       test_normalize
@@ -23,7 +21,7 @@ libpazpar2_a_SOURCES = pazpar2_config.c pazpar2_config.h eventl.c eventl.h \
        record.h record.c reclists.c reclists.h \
        relevance.c relevance.h termlists.c termlists.h \
         normalize7bit.h normalize7bit.c \
-       zeerex.c zeerex.h database.c database.h \
+       database.c database.h \
        settings.h settings.c sel_thread.c sel_thread.h getaddrinfo.c \
        charsets.c charsets.h \
        client.c client.h connection.c connection.h host.h parameters.h \
index 0eee31c..0ea7512 100644 (file)
@@ -423,27 +423,48 @@ static int nativesyntax_to_type(struct session_database *sdb, char *type,
  * TODO Consider thread safety!!!
  *
  */
-int client_report_facets(struct client *cl, ZOOM_resultset rs) {
-    int facet_idx;
+void client_report_facets(struct client *cl, ZOOM_resultset rs)
+{
+    struct session_database *sdb = client_get_database(cl);
     ZOOM_facet_field *facets = ZOOM_resultset_facets(rs);
-    int facet_num;
-    struct session *se = client_get_session(cl);
-    facet_num = ZOOM_resultset_facets_size(rs);
-    yaz_log(YLOG_DEBUG, "client_report_facets: %d", facet_num);
-
-    for (facet_idx = 0; facet_idx < facet_num; facet_idx++) {
-        const char *name = ZOOM_facet_field_name(facets[facet_idx]);
-        size_t term_idx;
-        size_t term_num = ZOOM_facet_field_term_count(facets[facet_idx]);
-        for (term_idx = 0; term_idx < term_num; term_idx++ ) {
-            int freq;
-            const char *term = ZOOM_facet_field_get_term(facets[facet_idx], term_idx, &freq);
-            if (term)
-                add_facet(se, name, term, freq);
+
+    if (sdb && facets)
+    {
+        struct session *se = client_get_session(cl);
+        int facet_num = ZOOM_resultset_facets_size(rs);
+        struct setting *s;
+
+        for (s = sdb->settings[PZ_FACETMAP]; s; s = s->next)
+        {
+            const char *p = strchr(s->name + 3, ':');
+            if (p && p[1] && s->value && s->value[0])
+            {
+                int facet_idx;
+                p++; /* p now holds logical facet name */
+                for (facet_idx = 0; facet_idx < facet_num; facet_idx++)
+                {
+                    const char *native_name =
+                        ZOOM_facet_field_name(facets[facet_idx]);
+                    if (native_name && !strcmp(s->value, native_name))
+                    {
+                        size_t term_idx;
+                        size_t term_num =
+                            ZOOM_facet_field_term_count(facets[facet_idx]);
+                        for (term_idx = 0; term_idx < term_num; term_idx++ )
+                        {
+                            int freq;
+                            const char *term =
+                                ZOOM_facet_field_get_term(facets[facet_idx],
+                                                          term_idx, &freq);
+                            if (term)
+                                add_facet(se, p, term, freq);
+                        }
+                        break;
+                    }
+                }
+            }
         }
     }
-
-    return 0;
 }
 
 static void ingest_raw_record(struct client *cl, ZOOM_record rec)
@@ -606,63 +627,49 @@ void client_record_response(struct client *cl)
     }
 }
 
-static int client_set_facets_request(struct client *cl, ZOOM_connection link)
+static void client_set_facets_request(struct client *cl, ZOOM_connection link)
 {
     struct session_database *sdb = client_get_database(cl);
-    const char *opt_facet_term_sort  = session_setting_oneval(sdb, PZ_TERMLIST_TERM_SORT);
-    const char *opt_facet_term_count = session_setting_oneval(sdb, PZ_TERMLIST_TERM_COUNT);
 
-    /* Future record filtering on target */
-    /* const char *opt_facet_record_filter = session_setting_oneval(sdb, PZ_RECORDFILTER); */
+    WRBUF w = wrbuf_alloc();
+    
+    struct setting *s;
 
-    /* Disable when no count is set */
-    /* TODO Verify: Do we need to reset the  ZOOM facets if a ZOOM Connection is being reused??? */
-    if (opt_facet_term_count && *opt_facet_term_count)
+    for (s = sdb->settings[PZ_FACETMAP]; s; s = s->next)
     {
-        int index = 0;
-        struct session *session = client_get_session(cl);
-        struct conf_service *service = session->service;
-        int num = service->num_metadata;
-        WRBUF wrbuf = wrbuf_alloc();
-        yaz_log(YLOG_DEBUG, "Facet settings, sort: %s count: %s",
-                opt_facet_term_sort, opt_facet_term_count);
-        for (index = 0; index < num; index++)
+        const char *p = strchr(s->name + 3, ':');
+        if (!p)
         {
-            struct conf_metadata *conf_meta = &service->metadata[index];
-            if (conf_meta->termlist)
-            {
-                if (wrbuf_len(wrbuf))
-                    wrbuf_puts(wrbuf, ", ");
-                wrbuf_printf(wrbuf, "@attr 1=%s", conf_meta->name);
-                
-                if (opt_facet_term_sort && *opt_facet_term_sort)
-                    wrbuf_printf(wrbuf, " @attr 2=%s", opt_facet_term_sort);
-                wrbuf_printf(wrbuf, " @attr 3=%s", opt_facet_term_count);
-            }
+            yaz_log(YLOG_WARN, "Malformed facetmap name: %s", s->name);
         }
-        if (wrbuf_len(wrbuf))
+        else if (s->value && s->value[0])
         {
-            yaz_log(YLOG_LOG, "Setting ZOOM facets option: %s", wrbuf_cstr(wrbuf));
-            ZOOM_connection_option_set(link, "facets", wrbuf_cstr(wrbuf));
-            return 1;
+            wrbuf_puts(w, "@attr 1=");
+            yaz_encode_pqf_term(w, s->value, strlen(s->value));
+            if (s->next)
+                wrbuf_puts(w, ",");
         }
     }
-    return 0;
+    yaz_log(YLOG_LOG, "using facets str: %s", wrbuf_cstr(w));
+    ZOOM_connection_option_set(link, "facets",
+                               wrbuf_len(w) ? wrbuf_cstr(w) : 0);
+    wrbuf_destroy(w);
 }
 
-int client_has_facet(struct client *cl, const char *name) {
-    ZOOM_facet_field facet_field;
-    if (!cl || !cl->resultset || !name) {
-        return 0;
-    }
-    facet_field = ZOOM_resultset_get_facet_field(cl->resultset, name);
-    if (facet_field) {
-        return 1;
+int client_has_facet(struct client *cl, const char *name)
+{
+    struct session_database *sdb = client_get_database(cl);
+    struct setting *s;
+
+    for (s = sdb->settings[PZ_FACETMAP]; s; s = s->next)
+    {
+        const char *p = strchr(s->name + 3, ':');
+        if (p && !strcmp(name, p + 1))
+            return 1;
     }
     return 0;
 }
 
-
 void client_start_search(struct client *cl)
 {
     struct session_database *sdb = client_get_database(cl);
index 6e2c745..0a6f61c 100644 (file)
@@ -71,7 +71,8 @@ static int connection_use(int delta)
     return result;
 }
 
-int connections_count() {
+int connections_count(void)
+{
     return connection_use(0);
 }
 
index 5a312f5..08359d6 100644 (file)
@@ -35,7 +35,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include "pazpar2_config.h"
 #include "settings.h"
 #include "http.h"
-#include "zeerex.h"
 #include "database.h"
 
 #include <sys/types.h>
@@ -72,27 +71,6 @@ struct database_hosts {
     YAZ_MUTEX mutex;
 };
 
-static xmlDoc *get_explain_xml(struct conf_targetprofiles *targetprofiles,
-                               const char *id)
-{
-    struct stat st;
-    char *dir;
-    char path[256];
-    char ide[256];
-    if (targetprofiles->type != Targetprofiles_local)
-    {
-        yaz_log(YLOG_FATAL, "Only supports local type");
-        return 0;
-    }
-    dir = targetprofiles->src;
-    urlencode(id, ide);
-    sprintf(path, "%s/%s", dir, ide);
-    if (!stat(path, &st))
-        return xmlParseFile(path);
-    else
-        return 0;
-}
-
 // Create a new host structure for hostport
 static struct host *create_host(const char *hostport, iochan_man_t iochan_man)
 {
@@ -211,15 +189,7 @@ static struct database *load_database(const char *id,
 {
     struct database *db;
     struct zr_explain *explain = 0;
-    xmlDoc *doc = 0;
 
-    if (service->targetprofiles 
-        && (doc = get_explain_xml(service->targetprofiles, id)))
-    {
-        explain = zr_read_xml(service->nmem, xmlDocGetRootElement(doc));
-        if (!explain)
-            return 0;
-    }
     db = new_database(id, service->nmem);
     db->explain = explain;
     db->next = service->databases;
index eb799f0..436d4e1 100644 (file)
@@ -44,8 +44,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #ifdef HAVE_MALLINFO
 #include <malloc.h>
 
-void print_meminfo(WRBUF wrbuf) {
-
+void print_meminfo(WRBUF wrbuf)
+{
     struct mallinfo minfo;
     minfo = mallinfo();
     wrbuf_printf(wrbuf, "  <memory>\n"
@@ -102,7 +102,7 @@ int http_session_use(int delta)
     g_http_sessions += delta;
     sessions = g_http_sessions;
     yaz_mutex_leave(g_http_session_mutex);
-    yaz_log(YLOG_DEBUG, "%s sesions=%d", delta == 0 ? "" : (delta > 0 ? "INC" : "DEC"), sessions);
+    yaz_log(YLOG_DEBUG, "%s sessions=%d", delta == 0 ? "" : (delta > 0 ? "INC" : "DEC"), sessions);
     return sessions;
 
 }
@@ -183,7 +183,8 @@ void http_session_destroy(struct http_session *s)
     yaz_log(http_sessions->log_level, "%p HTTP Session %u destroyed", s, s->session_id);
     yaz_mutex_enter(http_sessions->mutex);
     /* only if http_session has no active http sessions on it can be destroyed */
-    if (s->destroy_counter == s->activity_counter) {
+    if (s->destroy_counter == s->activity_counter)
+    {
         struct http_session **p = 0;
         must_destroy = 1;
         for (p = &http_sessions->session_list; *p; p = &(*p)->next)
@@ -325,7 +326,9 @@ static struct http_session *locate_session(struct http_channel *c)
 }
 
 // Call after use of locate_session, in order to increment the destroy_counter
-static void release_session(struct http_channel *c, struct http_session *session) {
+static void release_session(struct http_channel *c,
+                            struct http_session *session)
+{
     http_sessions_t http_sessions = c->http_sessions;
     yaz_mutex_enter(http_sessions->mutex);
     if (session)
@@ -476,13 +479,14 @@ static void cmd_settings(struct http_channel *c)
 
         xmlFreeDoc(doc);
     }
-    if (process_settings(s->psession, rq, rs) < 0) {
-        release_session(c,s);
+    if (process_settings(s->psession, rq, rs) < 0)
+    {
+        release_session(c, s);
         return;
     }
     rs->payload = HTTP_COMMAND_RESPONSE_PREFIX "<settings><status>OK</status></settings>";
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 // Compares two hitsbytarget nodes by hitcount
@@ -539,14 +543,11 @@ static void cmd_termlist(struct http_channel *c)
     struct http_response *rs = c->response;
     struct http_request *rq = c->request;
     struct http_session *s = locate_session(c);
-    struct termlist_score **p;
-    int len;
-    int i;
     const char *name = http_argbyname(rq, "name");
     const char *nums = http_argbyname(rq, "num");
     int num = 15;
     int status;
-    WRBUF debug_log = wrbuf_alloc();
+    WRBUF debug_log = 0;
 
     if (!s)
         return;
@@ -560,6 +561,8 @@ static void cmd_termlist(struct http_channel *c)
     if (nums)
         num = atoi(nums);
 
+    debug_log = wrbuf_alloc();
+
     wrbuf_rewind(c->wrbuf);
 
     wrbuf_puts(c->wrbuf, "<termlist>\n");
@@ -576,17 +579,23 @@ static void cmd_termlist(struct http_channel *c)
         wrbuf_puts(c->wrbuf, "<list name=\"");
         wrbuf_xmlputs(c->wrbuf, tname);
         wrbuf_puts(c->wrbuf, "\">\n");
-        if (!strcmp(tname, "xtargets")) {
+        if (!strcmp(tname, "xtargets"))
+        {
             int targets = targets_termlist(c->wrbuf, s->psession, num, c->nmem);
             wrbuf_printf(debug_log, " xtargets: %d", targets);
         }
         else
         {
-            p = termlist(s->psession, tname, &len);
+            int len;
+            struct termlist_score **p = 
+                get_termlist_score(s->psession, tname, &len);
             if (p && len)
                 wrbuf_printf(debug_log, " %s: %d", tname, len);
-            if (p) {
-                for (i = 0; i < len && i < num; i++){
+            if (p)
+            {
+                int i;
+                for (i = 0; i < len && i < num; i++)
+                {
                     // prevnt sending empty term elements
                     if (!p[i]->term || !p[i]->term[0])
                         continue;
@@ -595,12 +604,12 @@ static void cmd_termlist(struct http_channel *c)
                     wrbuf_puts(c->wrbuf, "<name>");
                     wrbuf_xmlputs(c->wrbuf, p[i]->term);
                     wrbuf_puts(c->wrbuf, "</name>");
-                        
+                    
                     wrbuf_printf(c->wrbuf, 
                                  "<frequency>%d</frequency>", 
                                  p[i]->frequency);
                     wrbuf_puts(c->wrbuf, "</term>\n");
-               }
+                }
             }
         }
         wrbuf_puts(c->wrbuf, "</list>\n");
@@ -613,7 +622,7 @@ static void cmd_termlist(struct http_channel *c)
     wrbuf_destroy(debug_log);
     rs->payload = nmem_strdup(rq->channel->nmem, wrbuf_cstr(c->wrbuf));
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 size_t session_get_memory_status(struct session *session);
@@ -627,7 +636,8 @@ static void session_status(struct http_channel *c, struct http_session *s)
     wrbuf_printf(c->wrbuf, "<session_nmem>%zu</session_nmem>\n", session_nmem);
 }
 
-static void cmd_session_status(struct http_channel *c) {
+static void cmd_session_status(struct http_channel *c)
+{
     struct http_response *rs = c->response;
     struct http_session *s = locate_session(c);
     if (!s)
@@ -639,7 +649,7 @@ static void cmd_session_status(struct http_channel *c) {
     wrbuf_puts(c->wrbuf, "</sessionstatus>\n");
     rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf));
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 
 }
 
@@ -670,7 +680,8 @@ static void cmd_server_status(struct http_channel *c)
 /*    struct http_session *p;                           */
 /*
     yaz_mutex_enter(http_sessions->mutex);
-    for (p = http_sessions->session_list; p; p = p->next) {
+    for (p = http_sessions->session_list; p; p = p->next)
+    {
         p->activity_counter++;
         wrbuf_puts(c->wrbuf, "<session-status>\n");
         wrbuf_printf(c->wrbuf, "<id>%s</id>\n", p->session_id);
@@ -738,7 +749,7 @@ static void cmd_bytarget(struct http_channel *c)
     wrbuf_puts(c->wrbuf, "</bytarget>");
     rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf));
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 static void write_metadata(WRBUF w, struct conf_service *service,
@@ -1057,7 +1068,8 @@ static void cmd_show(struct http_channel *c)
 
     if (block)
     {
-        if (!strcmp(block, "preferred") && !session_is_preferred_clients_ready(s->psession) && reclist_get_num_records(s->psession->reclist) == 0) {
+        if (!strcmp(block, "preferred") && !session_is_preferred_clients_ready(s->psession) && reclist_get_num_records(s->psession->reclist) == 0)
+        {
             // if there is already a watch/block. we do not block this one
             if (session_set_watch(s->psession, SESSION_WATCH_SHOW_PREF,
                                   show_records_ready, c, c) != 0)
@@ -1065,7 +1077,7 @@ static void cmd_show(struct http_channel *c)
                 yaz_log(c->http_sessions->log_level,
                         "%p Session %u: Blocking on cmd_show. Waiting for preferred targets", s, s->session_id);
             }
-            release_session(c,s);
+            release_session(c, s);
             return;
 
         }
@@ -1077,12 +1089,12 @@ static void cmd_show(struct http_channel *c)
             {
                 yaz_log(c->http_sessions->log_level, "%p Session %u: Blocking on cmd_show", s, s->session_id);
             }
-            release_session(c,s);
+            release_session(c, s);
             return;
         }
     }
     show_records(c, status);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 static void cmd_ping(struct http_channel *c)
@@ -1096,31 +1108,6 @@ static void cmd_ping(struct http_channel *c)
     release_session(c, s);
 }
 
-static int utf_8_valid(const char *str)
-{
-    yaz_iconv_t cd = yaz_iconv_open("utf-8", "utf-8");
-    if (cd)
-    {
-        /* check that query is UTF-8 encoded */
-        char *inbuf = (char *) str; /* we know iconv does not alter this */
-        size_t inbytesleft = strlen(inbuf);
-
-        size_t outbytesleft = strlen(inbuf) + 10;
-        char *out = xmalloc(outbytesleft);
-        char *outbuf = out;
-        size_t r = yaz_iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
-
-        /* if OK, try flushing the rest  */
-        if (r != (size_t) (-1))
-            r = yaz_iconv(cd, 0, 0, &outbuf, &outbytesleft);
-        yaz_iconv_close(cd);
-        xfree(out);
-        if (r == (size_t) (-1))
-            return 0;
-    }
-    return 1;
-}
-
 static void cmd_search(struct http_channel *c)
 {
     struct http_request *rq = c->request;
@@ -1138,25 +1125,25 @@ static void cmd_search(struct http_channel *c)
     if (!query)
     {
         error(rs, PAZPAR2_MISSING_PARAMETER, "query");
-        release_session(c,s);
+        release_session(c, s);
         return;
     }
-    if (!utf_8_valid(query))
+    if (!yaz_utf8_check(query))
     {
         error(rs, PAZPAR2_MALFORMED_PARAMETER_ENCODING, "query");
-        release_session(c,s);
+        release_session(c, s);
         return;
     }
     code = search(s->psession, query, startrecs, maxrecs, filter, &addinfo);
     if (code)
     {
         error(rs, code, addinfo);
-        release_session(c,s);
+        release_session(c, s);
         return;
     }
     rs->payload = HTTP_COMMAND_RESPONSE_PREFIX "<search><status>OK</status></search>";
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 
@@ -1175,7 +1162,8 @@ static void cmd_stat(struct http_channel *c)
     clients = session_active_clients(s->psession);
     statistics(s->psession, &stat);
 
-    if (stat.num_clients > 0) {
+    if (stat.num_clients > 0)
+    {
        progress = (stat.num_clients  - clients) / (float)stat.num_clients;
     }
 
@@ -1195,7 +1183,7 @@ static void cmd_stat(struct http_channel *c)
     wrbuf_puts(c->wrbuf, "</stat>");
     rs->payload = nmem_strdup(c->nmem, wrbuf_cstr(c->wrbuf));
     http_send_response(c);
-    release_session(c,s);
+    release_session(c, s);
 }
 
 static void cmd_info(struct http_channel *c)
diff --git a/src/pazpar2.rpm.init b/src/pazpar2.rpm.init
deleted file mode 100755 (executable)
index da5d642..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-#
-# pazpar2      Startup script for Pazpar2
-#
-# chkconfig: - 85 15
-# description: Pazpar2 Metasearcher
-# processname: pazpar2
-# config: /etc/pazpar2/server.xml
-# config: /etc/sysconfig/pazpar2
-# pidfile: /var/run/pazpar2.pid
-
-# Source function library.
-OPTIONS="-l /var/log/pazpar2.log -f /etc/pazpar2/server.xml"
-. /etc/rc.d/init.d/functions
-
-if [ -f /etc/sysconfig/pazpar2 ]; then
-        . /etc/sysconfig/pazpar2
-fi
-
-# Path to the apachectl script, server binary, and short-form for messages.
-DAEMON=${DAEMON-/usr/sbin/pazpar2}
-prog=pazpar2
-pidfile=${PIDFILE-/var/run/pazpar2.pid}
-lockfile=${LOCKFILE-/var/lock/subsys/pazpar2}
-RETVAL=0
-
-start() {
-        echo -n $"Starting $prog: "
-        daemon --pidfile=${pidfile} $DAEMON $OPTIONS -D -p ${pidfile}
-        RETVAL=$?
-        echo
-        [ $RETVAL = 0 ] && touch ${lockfile}
-        return $RETVAL
-}
-
-stop() {
-       echo -n $"Stopping $prog: "
-       killproc -p ${pidfile} -d 10 $DAEMON
-       RETVAL=$?
-       echo
-       [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
-}
-reload() {
-    stop
-    start
-}
-
-# See how we were called.
-case "$1" in
-  start)
-       start
-       ;;
-  stop)
-       stop
-       ;;
-  status)
-        status -p ${pidfile} $DAEMON
-       RETVAL=$?
-       ;;
-  restart)
-       stop
-       start
-       ;;
-  condrestart)
-       if [ -f ${pidfile} ] ; then
-               stop
-               start
-       fi
-       ;;
-  reload)
-        reload
-       ;;
-  configtest)
-       $DAEMON $OPTIONS -t
-       RETVAL=$?
-       ;;
-  *)
-       echo $"Usage: $prog {start|stop|restart|help|configtest}"
-       exit 1
-esac
-
-exit $RETVAL
diff --git a/src/pazpar2.rpm.logrotate b/src/pazpar2.rpm.logrotate
deleted file mode 100644 (file)
index b2bd6fb..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/var/log/pazpar2.log {
-       weekly
-       missingok
-       rotate 4
-       compress
-       delaycompress
-       notifempty
-       postrotate
-               if [ -f /var/run/pazpar2.pid ]; then
-                       /sbin/service pazpar2 restart > /dev/null
-               fi
-       endscript
-}
index d8d9569..b4c0dc5 100644 (file)
@@ -60,9 +60,6 @@ struct conf_config
 static char *parse_settings(struct conf_config *config,
                             NMEM nmem, xmlNode *node);
 
-static struct conf_targetprofiles *parse_targetprofiles(NMEM nmem,
-                                                        xmlNode *node);
-
 static void conf_metadata_assign(NMEM nmem, 
                                  struct conf_metadata * metadata,
                                  const char *name,
@@ -122,7 +119,6 @@ static struct conf_service *service_init(struct conf_server *server,
     service->next = 0;
     service->settings = 0;
     service->databases = 0;
-    service->targetprofiles = 0;
     service->server = server;
     service->session_timeout = 60; /* default session timeout */
     service->z3950_session_timeout = 180;
@@ -515,17 +511,6 @@ static struct conf_service *service_create_static(struct conf_server *server,
         }
         else if (!strcmp((const char *) n->name, "settings"))
             got_settings++;
-        else if (!strcmp((const char *) n->name, (const char *) "targetprofiles"))
-        {
-            if (service->targetprofiles)
-            {
-                yaz_log(YLOG_FATAL, "Can't repeat targetprofiles");
-                return 0;
-            }
-            if (!(service->targetprofiles = 
-                  parse_targetprofiles(service->nmem, n)))
-                return 0;
-        }
         else if (!strcmp((const char *) n->name, "relevance"))
         {
             if (service->relevance_pct)
@@ -882,43 +867,6 @@ WRBUF conf_get_fname(struct conf_config *config, const char *fname)
     return w;
 }
 
-static struct conf_targetprofiles *parse_targetprofiles(NMEM nmem,
-                                                        xmlNode *node)
-{
-    struct conf_targetprofiles *r = nmem_malloc(nmem, sizeof(*r));
-    xmlChar *type = xmlGetProp(node, (xmlChar *) "type");
-    xmlChar *src = xmlGetProp(node, (xmlChar *) "src");
-
-    memset(r, 0, sizeof(*r));
-
-    if (type)
-    {
-        if (!strcmp((const char *) type, "local"))
-            r->type = Targetprofiles_local;
-        else
-        {
-            yaz_log(YLOG_FATAL, "Unknown targetprofile type");
-            return 0;
-        }
-    }
-    else
-    {
-        yaz_log(YLOG_FATAL, "Must specify type for targetprofile");
-        return 0;
-    }
-
-    if (src)
-        r->src = nmem_strdup(nmem, (const char *) src);
-    else
-    {
-        yaz_log(YLOG_FATAL, "Must specify src in targetprofile");
-        return 0;
-    }
-    xmlFree(type);
-    xmlFree(src);
-    return r;
-}
-
 struct conf_service *locate_service(struct conf_server *server,
                                     const char *service_id)
 {
index 60d7793..dd199c5 100644 (file)
@@ -122,7 +122,6 @@ struct conf_service
     pp2_charset_t facet_pct;
 
     struct database *databases;
-    struct conf_targetprofiles *targetprofiles;
     struct conf_server *server;
 };
 
@@ -153,14 +152,6 @@ struct conf_server
     database_hosts_t database_hosts;
 };
 
-struct conf_targetprofiles
-{
-    enum {
-        Targetprofiles_local
-    } type;
-    char *src;
-};
-
 struct conf_config *config_create(const char *fname, int verbose);
 void config_destroy(struct conf_config *config);
 void config_process_events(struct conf_config *config);
index 75fbb17..545f0fc 100644 (file)
@@ -590,8 +590,6 @@ int session_is_preferred_clients_ready(struct session *s)
     return res == 0;
 }
 
-
-
 enum pazpar2_error_code search(struct session *se,
                                const char *query,
                                const char *startrecs, const char *maxrecs,
@@ -866,7 +864,8 @@ struct hitsbytarget *hitsbytarget(struct session *se, int *count, NMEM nmem)
     return res;
 }
 
-struct termlist_score **termlist(struct session *se, const char *name, int *num)
+struct termlist_score **get_termlist_score(struct session *se,
+                                           const char *name, int *num)
 {
     int i;
     struct termlist_score **tl = 0;
@@ -1503,7 +1502,6 @@ static int ingest_to_cluster(struct client *cl,
             // construct facets ... unless the client already has reported them
             if (ser_md->termlist && !client_has_facet(cl, (char *) type))
             {
-
                 if (ser_md->type == Metadata_type_year)
                 {
                     char year[64];
index fdecbc4..179ade2 100644 (file)
@@ -166,7 +166,8 @@ struct record_cluster *show_single_start(struct session *s, const char *id,
                                          struct record_cluster **prev_r,
                                          struct record_cluster **next_r);
 void show_single_stop(struct session *s, struct record_cluster *rec);
-struct termlist_score **termlist(struct session *s, const char *name, int *num);
+struct termlist_score **get_termlist_score(struct session *s,
+                                           const char *name, int *num);
 int session_set_watch(struct session *s, int what, session_watchfun fun, void *data, struct http_channel *c);
 int session_active_clients(struct session *s);
 int session_is_preferred_clients_ready(struct session *s);
index 691e627..b8c1d0a 100644 (file)
@@ -71,14 +71,12 @@ static char *hard_settings[] = {
     "pz:negotiation_charset",
     "pz:max_connections",
     "pz:reuse_connections",     /* PZ_REUSE_CONNECTION    */
-    "pz:termlist_term_sort",    /* PZ_TERMLIST_TERM_SORT  */
-    "pz:termlist_term_count",   /* PZ_TERMLIST_TERM_COUNT */
     "pz:termlist_term_factor",  /* PZ_TERMLIST_TERM_FACTOR*/
     "pz:preferred",             /* PZ_PREFERRED           */
     "pz:extra_args",            /* PZ_EXTRA_ARGS          */
     "pz:query_syntax",          /* PZ_QUERY_SYNTAX        */
     "pz:option_recordfilter",   /* PZ_OPTION_RECORDFILTER */
-
+    "pz:facetmap:",             /* PZ_FACETMAP */
     0
 };
 
index 86eb31d..5862b9e 100644 (file)
@@ -44,14 +44,13 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define PZ_NEGOTIATION_CHARSET  21
 #define PZ_MAX_CONNECTIONS      22
 #define PZ_REUSE_CONNECTIONS    23
-#define PZ_TERMLIST_TERM_SORT   24
-#define PZ_TERMLIST_TERM_COUNT  25
-#define PZ_TERMLIST_TERM_FACTOR 26
-#define PZ_PREFERRED            27
-#define PZ_EXTRA_ARGS           28
-#define PZ_QUERY_SYNTAX         29
-#define PZ_OPTION_RECORDFILTER  30
-#define PZ_MAX_EOF              31
+#define PZ_TERMLIST_TERM_FACTOR 24
+#define PZ_PREFERRED            25
+#define PZ_EXTRA_ARGS           26
+#define PZ_QUERY_SYNTAX         27
+#define PZ_OPTION_RECORDFILTER  28
+#define PZ_FACETMAP             29
+#define PZ_MAX_EOF              30
 
 struct setting
 {
diff --git a/src/zeerex.c b/src/zeerex.c
deleted file mode 100644 (file)
index 3894435..0000000
+++ /dev/null
@@ -1,709 +0,0 @@
-/* This file is part of Pazpar2.
-   Copyright (C) 2006-2011 Index Data
-
-Pazpar2 is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
-version.
-
-Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-*/
-
-// Reads Zeerex records into a set of structures
-
-#include <string.h>
-
-#include <yaz/yaz-util.h>
-
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-
-#include "zeerex.h"
-
-// Replace this with something that will take a callback
-static void fail(const char *s, xmlNode *n)
-{
-    yaz_log(YLOG_WARN, "Zeerex Err '%s'; elem '%s/%s'", 
-            s, n->parent->name, n->name);
-}
-
-// returns an nmem-allocated string if attr is present, or null
-static char *attrtostr(NMEM m, xmlNode *n, const char *name)
-{
-    char *s = (char *) xmlGetProp(n, (xmlChar *) name);
-    if (s)
-    {
-        char *r = nmem_strdup(m, s);
-        xmlFree(s);
-        return r;
-    }
-    else
-        return 0;
-}
-
-static int attrtoint(xmlNode *n, const char *name)
-{
-    char *s = (char *)xmlGetProp(n, (xmlChar *) name);
-    if (s)
-    {
-        int val = atoi(s);
-        xmlFree(s);
-        return val;
-    }
-    else
-        return 0;
-}
-
-static Zr_bool attrtobool(xmlNode *node, const char *name)
-{
-    char *v = (char *) xmlGetProp(node, (xmlChar *) name);
-    if (v)
-    {
-        Zr_bool res;
-        if (!strcmp(v, "true"))
-            res = Zr_bool_true;
-        else if (!strcmp(v, "false"))
-            res = Zr_bool_false;
-        else
-            res = Zr_bool_unknown;
-        xmlFree(v);
-        return res;
-    }
-    else
-        return Zr_bool_unknown;
-}
-
-static char *valuetostr(NMEM m, xmlNode *n)
-{
-    char *val = (char *) xmlNodeGetContent(n);
-    if (val)
-    {
-        char *res = nmem_strdup(m, val);
-        xmlFree(val);
-        return res;
-    }
-    else
-        return 0;
-}
-
-static int valuetoint(xmlNode *n)
-{
-    char *s = (char *) xmlNodeGetContent(n);
-    if (s)
-    {
-        int res = atoi(s);
-        xmlFree(s);
-        return res;
-    }
-    else
-        return 0;
-}
-
-static Zr_langstr *findlangstr(NMEM m, xmlNode *node, const char *name)
-{
-    xmlNode *n;
-    Zr_langstr *res = 0;
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type == XML_ELEMENT_NODE 
-            && !strcmp((const char *) n->name, name))
-        {
-            Zr_langstr *new = nmem_malloc(m, sizeof(*new));
-            memset(new, 0, sizeof(*new));
-            new->primary = attrtobool(n, "primary");
-            new->lang = attrtostr(m, n, "lang");
-            new->str = valuetostr(m, n);
-            new->next = res;
-            res = new;
-        }
-    }
-    return res;
-}
-
-const char *zr_langstr(Zr_langstr *s, const char *lang)
-{
-    Zr_langstr *p;
-    for (p = s; p; p = p->next)
-        if ((!lang && p->primary == Zr_bool_true) ||
-                (lang && p->lang && !strcmp(lang, p->lang)))
-            return p->str;
-    return s->str;
-}
-
-static struct zr_authentication *authentication(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_authentication *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->type = attrtostr(m, node, "type");
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "open"))
-            r->open = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "user"))
-            r->user = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "group"))
-            r->group = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "password"))
-            r->password = valuetostr(m, n);
-        else
-        {
-            fail("Unexpected element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-
-static struct zr_serverInfo *serverInfo(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_serverInfo *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    r->protocol = attrtostr(m, node, "protocol");
-    r->version = attrtostr(m, node, "version");
-    r->transport = attrtostr(m, node, "transport");
-    r->method = attrtostr(m, node, "method");
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "host"))
-            r->host = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "port"))
-            r->port = valuetoint(n);
-        else if (!strcmp((const char *) n->name, "database"))
-            r->database = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "authentication"))
-        {
-            if (!(r->authentication = authentication(m, n)))
-                return 0;
-        }
-        else
-        {
-            fail("Unexpected element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static struct zr_agent *agent(NMEM m, xmlNode *node)
-{
-    struct zr_agent *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->type = attrtostr(m, node, "type");
-    r->identifier = attrtostr(m, node, "identifier");
-    r->value = valuetostr(m, node);
-    return r;
-}
-
-static struct zr_implementation *implementation(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_implementation *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->identifier = attrtostr(m, node, "identifier");
-    r->version = attrtostr(m, node, "version");
-    r->title = findlangstr(m, node, "title");
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "agent"))
-        {
-            struct zr_agent *ag = agent(m, node);
-            if (!ag)
-                return 0;
-            ag->next = r->agents;
-            r->agents = ag;
-        }
-    }
-    return r;
-}
-
-struct zr_databaseInfo *databaseInfo(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_databaseInfo *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    r->title = findlangstr(m, node, "title");
-    r->description = findlangstr(m, node, "description");
-    r->history = findlangstr(m, node, "history");
-    r->extent = findlangstr(m, node, "extent");
-    r->restrictions = findlangstr(m, node, "restrictions");
-    r->langUsage = findlangstr(m, node, "langUsage");
-
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "agents"))
-        {
-            xmlNode *n2;
-            for (n2 = n->children; n2; n2 = n2->next)
-            {
-                if (n2->type != XML_ELEMENT_NODE)
-                    continue;
-                if (strcmp((const char *) n2->name, "agent"))
-                    continue;
-                else
-                {
-                    struct zr_agent *ag = agent(m, n2);
-                    if (!ag)
-                        return 0;
-                    ag->next = r->agents;
-                    r->agents = ag;
-                }
-            }
-        }
-        else if (!strcmp((const char *) n->name, "implementation")) 
-        {
-            if (!(r->implementation = implementation(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "links"))
-        {
-            xmlNode *n2;
-            for (n2 = n->children; n2; n2 = n2->next)
-            {
-                if (n2->type != XML_ELEMENT_NODE)
-                    continue;
-                if (!strcmp((const char *) n2->name, "link"))
-                    continue;
-                else
-                {
-                    struct zr_link *li = nmem_malloc(m, sizeof(*li));
-                    memset(li, 0, sizeof(*li));
-                    li->type = attrtostr(m, n2, "type");
-                    li->value = valuetostr(m, n2);
-                    li->next = r->links;
-                    r->links = li;
-                }
-            }
-        }
-        else if (!strcmp((const char *) n->name, "history") && !r->lastUpdate)
-            r->lastUpdate = attrtostr(m, n, "lastUpdate");
-        else if (!strcmp((const char *) n->name, "extent") && !r->numberOfRecords)
-            r->numberOfRecords = attrtoint(n, "numberOfRecords");
-        else if (!strcmp((const char *) n->name, "langUsage") && !r->codes)
-            r->codes = attrtostr(m, n, "codes");
-    }
-    return r;
-}
-
-struct zr_metaInfo *metaInfo(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_metaInfo *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "dateModified"))
-            r->dateModified = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "dateAggregated"))
-            r->dateAggregated = valuetostr(m, n);
-        else if (!strcmp((const char *) n->name, "aggregatedFrom"))
-            r->aggregatedFrom = valuetostr(m, n);
-        else
-        {
-            fail("Unexpected element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-struct zr_set *set(NMEM m, xmlNode *node)
-{
-    struct zr_set *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->name = attrtostr(m, node, "name");
-    r->identifier = attrtostr(m, node, "identifier");
-    r->title = findlangstr(m, node, "title");
-    return r;
-}
-
-struct zr_attr *attr(NMEM m, xmlNode *node)
-{
-    struct zr_attr *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->type = attrtoint(node, "type");
-    r->set = attrtostr(m, node, "set");
-    return r;
-}
-
-static struct zr_map *map(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_map *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    r->lang = attrtostr(m, node, "lang");
-    r->primary = attrtobool(node, "primary");
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "name"))
-        {
-            r->set = attrtostr(m, n, "set");
-            r->name = valuetostr(m, n);
-        }
-        else if (!strcmp((const char *) n->name, "attr"))
-        {
-            struct zr_attr *new = attr(m, n);
-            if (!new)
-                return 0;
-            new->next = r->attrs;
-            r->attrs = new;
-        }
-        else
-        {
-            fail("Unexpected element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static Zr_setting *findsetting(NMEM m, xmlNode *node, char *name)
-{
-    static Zr_setting *r = 0; /* thread pr */
-    xmlNode *n;
-    for (n = node->children; n; n = n->next)
-    {
-        if (node->type == XML_ELEMENT_NODE && !strcmp((const char *) n->name, name))
-        {
-            xmlNode *n2;
-            struct zr_setting *new = nmem_malloc(m, sizeof(*new));
-            memset(new, 0, sizeof(*new));
-            new->type = attrtostr(m, n, "type");
-            for (n2 = n->children; n2; n2 = n2->next)
-            {
-                if (n2->type == XML_ELEMENT_NODE && !strcmp((const char *) n2->name, "map"))
-                {
-                    new->map = map(m, n2);
-                    if (!new)
-                        return 0;
-                    break;
-                }
-            }
-            if (!new->map)
-                new->value = (char *) xmlNodeGetContent(n);
-            new->next = r;
-            r = new;
-        }
-    }
-    return r;
-}
-
-static struct zr_configInfo *configInfo(NMEM m, xmlNode *node)
-{
-    struct zr_configInfo *r = nmem_malloc(m, sizeof(*r));
-
-    r->defaultv = findsetting(m, node, "default");
-    r->setting = findsetting(m, node, "setting");
-    r->supports = findsetting(m, node, "supports");
-    return r;
-}
-
-static struct zr_index *parse_index(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_index *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    r->search = attrtobool(node, "search");
-    r->scan = attrtobool(node, "scan");
-    r->sort = attrtobool(node, "sort");
-    r->id = attrtostr(m, node, "id");
-    r->title = findlangstr(m, node, "title");
-
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "map"))
-        {
-            struct zr_map *new = map(m, n);
-            if (!new)
-                return 0;
-            new->next = r->maps;
-            r->maps = new;
-        }
-        else if (!strcmp((const char *) n->name, "configInfo"))
-        {
-            if (!(r->configInfo = configInfo(m, n)))
-                return 0;
-        }
-        else if (strcmp((const char *) n->name, "title"))
-        {
-            fail("Unknown child element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static struct zr_sortKeyword *sortKeyword(NMEM m, xmlNode *node)
-{
-    struct zr_sortKeyword *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->value = valuetostr(m, node);
-    return r;
-}
-
-static struct zr_indexInfo *indexInfo(NMEM m , xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_indexInfo *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "set"))
-        {
-            struct zr_set *new = set(m, n);
-            if (!new)
-                return 0;
-            new->next = r->sets;
-            r->sets = new;
-        }
-        else if (!strcmp((const char *) n->name, "index"))
-        {
-            struct zr_index *new = parse_index(m, n);
-            if (!new)
-                return 0;
-            new->next = r->indexes;
-            r->indexes = new;
-        }
-        else if (!strcmp((const char *) n->name, "sortKeyword"))
-        {
-            struct zr_sortKeyword *new = sortKeyword(m, n);
-            if (!new)
-                return 0;
-            new->next = r->sortKeywords;
-            r->sortKeywords = new;
-        }
-        else if (!strcmp((const char *) n->name, "sortKeyword"))
-        {
-            if (!(r->configInfo = configInfo(m, n)))
-                return 0;
-        }
-        else
-        {
-            fail("Unknown child element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static struct zr_elementSet *elementSet(NMEM m, xmlNode *node)
-{
-    struct zr_elementSet *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    r->name = attrtostr(m, node, "name");
-    r->identifier = attrtostr(m, node, "identifier");
-    r->title = findlangstr(m, node, "title");
-    return r;
-}
-
-static struct zr_recordSyntax *recordSyntax(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_recordSyntax *r = nmem_malloc(m, sizeof(*r));
-    struct zr_elementSet **elementp = &r->elementSets;
-
-    memset(r, 0, sizeof(*r));
-    r->name = attrtostr(m, node, "name");
-    r->identifier = attrtostr(m, node, "identifier");
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "elementSet"))
-        {
-            if (!(*elementp = elementSet(m, n)))
-                return 0;
-            elementp = &(*elementp)->next;
-        }
-        else
-        {
-            fail("Unknown child element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static struct zr_recordInfo *recordInfo(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_recordInfo *r = nmem_malloc(m, sizeof(*r));
-    struct zr_recordSyntax **syntaxp = &r->recordSyntaxes;
-
-    memset(r, 0, sizeof(*r));
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "recordSyntax"))
-        {
-            if (!(*syntaxp = recordSyntax(m, n)))
-                return 0;
-            syntaxp = &(*syntaxp)->next;
-        }
-        else
-        {
-            fail("Unknown child element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-
-static struct zr_schema *schema(NMEM m, xmlNode *node)
-{
-    struct zr_schema *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-    
-    r->name = attrtostr(m, node, "name");
-    r->identifier = attrtostr(m, node, "identifier");
-    r->retrieve = attrtobool(node, "retrieve");
-    r->sort = attrtobool(node, "sort");
-    r->location = attrtostr(m, node, "location");
-    r->title = findlangstr(m, node, "title");
-    return r;
-}
-
-static struct zr_schemaInfo *schemaInfo(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_schemaInfo *r = nmem_malloc(m, sizeof(*r));
-    struct zr_schema **schemap = &r->schemas;
-
-    memset(r, 0, sizeof(*r));
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "schema"))
-        {
-            if (!(*schemap = schema(m, n)))
-                return 0;
-            schemap = &(*schemap)->next;
-        }
-        else
-        {
-            fail("Unknown child element", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-static struct zr_explain *explain(NMEM m, xmlNode *node)
-{
-    xmlNode *n;
-    struct zr_explain *r = nmem_malloc(m, sizeof(*r));
-    memset(r, 0, sizeof(*r));
-
-    for (n = node->children; n; n = n->next)
-    {
-        if (n->type != XML_ELEMENT_NODE)
-            continue;
-        if (!strcmp((const char *) n->name, "serverInfo"))
-        {
-            if (!(r->serverInfo = serverInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "databaseInfo"))
-        {
-            if (!(r->databaseInfo = databaseInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "metaInfo"))
-        {
-            if (!(r->metaInfo = metaInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "indexInfo"))
-        {
-            if (!(r->indexInfo = indexInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "recordInfo"))
-        {
-            if (!(r->recordInfo = recordInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "schemaInfo"))
-        {
-            if (!(r->schemaInfo = schemaInfo(m, n)))
-                return 0;
-        }
-        else if (!strcmp((const char *) n->name, "configInfo"))
-        {
-            if (!(r->configInfo = configInfo(m, n)))
-               return 0;
-        }
-        else if (!strcmp((const char *) n->name, "status"))
-            continue;
-        else
-        {
-            fail("Unknown child element of root node", n);
-            return 0;
-        }
-    }
-    return r;
-}
-
-struct zr_explain *zr_read_xml(NMEM m, xmlNode *n)
-{
-    return explain(m, n);
-}
-
-struct zr_explain *zr_read_file(NMEM m, const char *fn)
-{
-    xmlDoc *doc = xmlParseFile(fn);
-    struct zr_explain *r;
-    if (!doc)
-    {
-        yaz_log(YLOG_WARN|YLOG_ERRNO, "Unable to open %s", fn);
-        return 0;
-    }
-    r = explain(m, xmlDocGetRootElement(doc));
-    xmlFree(doc);
-    return r;
-}
-
-/*
- * Local variables:
- * c-basic-offset: 4
- * c-file-style: "Stroustrup"
- * indent-tabs-mode: nil
- * End:
- * vim: shiftwidth=4 tabstop=8 expandtab
- */
-
diff --git a/src/zeerex.h b/src/zeerex.h
deleted file mode 100644 (file)
index 20ad4ec..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-/* This file is part of Pazpar2.
-   Copyright (C) 2006-2011 Index Data
-
-Pazpar2 is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
-version.
-
-Pazpar2 is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-*/
-
-#ifndef ZEEREX_H
-#define ZEEREX_H
-
-// Structures representing a Zeerex record.
-
-typedef enum zr_bool
-{
-    Zr_bool_unknown,
-    Zr_bool_false,
-    Zr_bool_true
-} Zr_bool;
-
-typedef struct zr_langstr
-{
-    Zr_bool primary;
-    char *lang;
-    char *str;
-    struct zr_langstr *next;
-} Zr_langstr;
-
-struct zr_authentication
-{
-    char *type;
-    char *open;
-    char *user;
-    char *group;
-    char *password;
-};
-
-struct zr_serverInfo
-{
-    char *protocol;
-    char *version;
-    char *transport;
-    char *method;
-    char *host;
-    int port;
-    char *database;
-    struct zr_authentication *authentication;
-};
-
-struct zr_agent
-{
-    char *type;
-    char *identifier;
-    char *value;
-    struct zr_agent *next;
-};
-
-struct zr_link
-{
-    char *type;
-    char *value;
-    struct zr_link *next;
-};
-
-struct zr_implementation
-{
-    char *identifier;
-    char *version;
-    struct zr_agent *agents;
-    Zr_langstr *title;
-};
-
-struct zr_databaseInfo
-{
-    Zr_langstr *title;
-    Zr_langstr *description;
-    Zr_langstr *history;
-    char *lastUpdate;
-    Zr_langstr *extent;
-    int numberOfRecords;
-    Zr_langstr *restrictions;
-    Zr_langstr *langUsage;
-    char *codes;
-    struct zr_agent *agents;
-    struct zr_implementation *implementation;
-    struct zr_link *links;
-};
-
-struct zr_metaInfo
-{
-    char *dateModified;
-    char *dateAggregated;
-    char *aggregatedFrom;
-};
-
-struct zr_set
-{
-    Zr_langstr *title;
-    char *name;
-    char *identifier;
-    struct zr_set *next;
-};
-
-struct zr_attr
-{
-    int type;
-    char *set;
-    char *value;
-    struct zr_attr *next;
-};
-
-struct zr_map
-{
-    Zr_bool primary;
-    char *lang;
-    char *name;
-    char *set;
-    struct zr_attr *attrs;
-    struct zr_map *next;
-};
-
-typedef struct zr_setting
-{
-    char *type;
-    char *value;
-    struct zr_map *map;
-    struct zr_setting *next;
-} Zr_setting;
-
-struct zr_configInfo
-{
-    Zr_setting *defaultv;
-    Zr_setting *setting;
-    Zr_setting *supports;
-};
-
-struct zr_index
-{
-    Zr_bool search;
-    Zr_bool scan;
-    Zr_bool sort;
-    char *id;
-    Zr_langstr *title;
-    struct zr_map *maps;
-    struct zr_configInfo *configInfo;
-    struct zr_index *next;
-};
-
-struct zr_sortKeyword
-{
-    char *value;
-    struct zr_sortKeyword *next;
-};
-
-struct zr_indexInfo
-{
-    struct zr_set *sets;
-    struct zr_index *indexes;
-    struct zr_sortKeyword *sortKeywords;
-    struct zr_configInfo *configInfo;
-};
-
-struct zr_elementSet
-{
-    char *name;
-    char *identifier;
-    Zr_langstr *title;
-    struct zr_elementSet *next;
-};
-
-struct zr_recordSyntax
-{
-    char *name;
-    char *identifier;
-    struct zr_elementSet *elementSets;
-    struct zr_recordSyntax *next;
-};
-
-struct zr_recordInfo
-{
-    struct zr_recordSyntax *recordSyntaxes;
-};
-
-struct zr_schema
-{
-    char *name;
-    char *identifier;
-    Zr_bool retrieve;
-    Zr_bool sort;
-    char *location;
-    Zr_langstr *title;
-    struct zr_schema *next;
-};
-
-struct zr_schemaInfo
-{
-    struct zr_schema *schemas;
-};
-
-struct zr_explain
-{
-    struct zr_serverInfo *serverInfo;
-    struct zr_databaseInfo *databaseInfo;
-    struct zr_metaInfo *metaInfo;
-    struct zr_indexInfo *indexInfo;
-    struct zr_recordInfo *recordInfo;
-    struct zr_schemaInfo *schemaInfo;
-    struct zr_configInfo *configInfo;
-};
-
-struct zr_explain *zr_read_xml(NMEM m, xmlNode *n);
-struct zr_explain *zr_read_file(NMEM m, const char *fn);
-const char *zr_langstr(Zr_langstr *s, const char *lang);
-
-#endif
-
-/*
- * Local variables:
- * c-basic-offset: 4
- * c-file-style: "Stroustrup"
- * indent-tabs-mode: nil
- * End:
- * vim: shiftwidth=4 tabstop=8 expandtab
- */
-
index 65287b7..77c902f 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="z3950_indexdata_com_marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 89839e2..22e6e04 100755 (executable)
@@ -10,7 +10,7 @@ F=''
 for p in $PATH; do
     if test -x $p/yaz-ztest -a -x $p/yaz-config; then
        VERSION=`$p/yaz-config -V|awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-       if test $VERSION -ge 4000012; then
+       if test $VERSION -ge 4002000; then
            F=$p/yaz-ztest
             break
        fi
index eea7f7b..af9d74a 100644 (file)
@@ -1,10 +1,10 @@
 http://localhost:9763/search.pz2?command=init&clear=1
-http://localhost:9763/search.pz2?session=1&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl&pz:termlist_term_count%5Blocalhost:9999%2Fdb1%5D=0
+http://localhost:9763/search.pz2?session=1&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl
 http://localhost:9763/search.pz2?session=1&command=search&query=7+and+computer
 http://localhost:9763/search.pz2?session=1&command=show&block=1
 http://localhost:9763/search.pz2?session=1&command=bytarget
 4 http://localhost:9763/search.pz2?session=1&command=termlist&name=xtargets%2Cauthor%2Csubject%2Cdate%2Cmedium
-http://localhost:9763/search.pz2?session=1&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl&pz:termlist_term_count%5Blocalhost:9999%2Fdb1%5D=5&pz:maxrecs%5Blocalhost:9999%2Fdb1%5D=2
+http://localhost:9763/search.pz2?session=1&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl&pz:maxrecs%5Blocalhost:9999%2Fdb1%5D=2&pz:facetmap:author%5Blocalhost:9999%2Fdb1%5D=author&pz:facetmap:subject%5Blocalhost:9999%2Fdb1%5D=subject&pz:facetmap:date%5Blocalhost:9999%2Fdb1%5D=date
 http://localhost:9763/search.pz2?session=1&command=search&query=4+and+computer
 http://localhost:9763/search.pz2?session=1&command=show&block=1
 http://localhost:9763/search.pz2?session=1&command=bytarget
@@ -18,7 +18,7 @@ http://localhost:9763/search.pz2?session=1&command=termlist&name=xtargets%2Cauth
 10 http://localhost:9763/search.pz2?session=1&command=termlist&name=xtargets%2Cauthor%2Csubject%2Cdate%2Cmedium
 http://localhost:9763/search.pz2?session=1&command=bytarget
 http://localhost:9763/search.pz2?command=init
-http://localhost:9763/search.pz2?session=2&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl&pz:apdulog%5Blocalhost:9999%2Fdb1%5D=1
+http://localhost:9763/search.pz2?session=2&command=settings&pz:name%5Blocalhost:9999%2Fdb1%5D=db1&pz:requestsyntax%5Blocalhost:9999%2Fdb1%5D=usmarc&pz:nativesyntax%5Blocalhost:9999%2Fdb1%5D=txml&pz:xslt%5Blocalhost:9999%2Fdb1%5D=tmarc.xsl&pz:apdulog%5Blocalhost:9999%2Fdb1%5D=1&pz:facetmap:date%5Blocalhost:9999%2Fdb1%5D=date
 http://localhost:9763/search.pz2?session=2&command=search&query=9+and+computer
 10 http://localhost:9763/search.pz2?session=2&command=show&block=1
 http://localhost:9763/search.pz2?session=2&command=termlist&name=xtargets%2Cauthor%2Csubject%2Cdate%2Cmedium
index 64048ad..a63c538 100644 (file)
 <term><name>author2</name><frequency>80</frequency></term>
 <term><name>author3</name><frequency>70</frequency></term>
 <term><name>author4</name><frequency>60</frequency></term>
+<term><name>author5</name><frequency>50</frequency></term>
+<term><name>author6</name><frequency>40</frequency></term>
+<term><name>author7</name><frequency>30</frequency></term>
+<term><name>author8</name><frequency>20</frequency></term>
+<term><name>author9</name><frequency>10</frequency></term>
 </list>
 <list name="subject">
 <term><name>subject0</name><frequency>100</frequency></term>
 <term><name>subject2</name><frequency>80</frequency></term>
 <term><name>subject3</name><frequency>70</frequency></term>
 <term><name>subject4</name><frequency>60</frequency></term>
+<term><name>subject5</name><frequency>50</frequency></term>
+<term><name>subject6</name><frequency>40</frequency></term>
+<term><name>subject7</name><frequency>30</frequency></term>
+<term><name>subject8</name><frequency>20</frequency></term>
+<term><name>subject9</name><frequency>10</frequency></term>
 </list>
 <list name="date">
 <term><name>date0</name><frequency>100</frequency></term>
 <term><name>date2</name><frequency>80</frequency></term>
 <term><name>date3</name><frequency>70</frequency></term>
 <term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
 </list>
 <list name="medium">
 </list>
index 0cf8475..812c1c9 100644 (file)
 <term><name>author2</name><frequency>80</frequency></term>
 <term><name>author3</name><frequency>70</frequency></term>
 <term><name>author4</name><frequency>60</frequency></term>
+<term><name>author5</name><frequency>50</frequency></term>
+<term><name>author6</name><frequency>40</frequency></term>
+<term><name>author7</name><frequency>30</frequency></term>
+<term><name>author8</name><frequency>20</frequency></term>
+<term><name>author9</name><frequency>10</frequency></term>
 </list>
 <list name="subject">
 <term><name>subject0</name><frequency>100</frequency></term>
 <term><name>subject2</name><frequency>80</frequency></term>
 <term><name>subject3</name><frequency>70</frequency></term>
 <term><name>subject4</name><frequency>60</frequency></term>
+<term><name>subject5</name><frequency>50</frequency></term>
+<term><name>subject6</name><frequency>40</frequency></term>
+<term><name>subject7</name><frequency>30</frequency></term>
+<term><name>subject8</name><frequency>20</frequency></term>
+<term><name>subject9</name><frequency>10</frequency></term>
 </list>
 <list name="date">
 <term><name>date0</name><frequency>100</frequency></term>
 <term><name>date2</name><frequency>80</frequency></term>
 <term><name>date3</name><frequency>70</frequency></term>
 <term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
 </list>
 <list name="medium">
 </list>
index e988091..abb5f68 100644 (file)
 <term><name>author2</name><frequency>80</frequency></term>
 <term><name>author3</name><frequency>70</frequency></term>
 <term><name>author4</name><frequency>60</frequency></term>
+<term><name>author5</name><frequency>50</frequency></term>
+<term><name>author6</name><frequency>40</frequency></term>
+<term><name>author7</name><frequency>30</frequency></term>
+<term><name>author8</name><frequency>20</frequency></term>
+<term><name>author9</name><frequency>10</frequency></term>
 </list>
 <list name="subject">
 <term><name>subject0</name><frequency>100</frequency></term>
 <term><name>subject2</name><frequency>80</frequency></term>
 <term><name>subject3</name><frequency>70</frequency></term>
 <term><name>subject4</name><frequency>60</frequency></term>
+<term><name>subject5</name><frequency>50</frequency></term>
+<term><name>subject6</name><frequency>40</frequency></term>
+<term><name>subject7</name><frequency>30</frequency></term>
+<term><name>subject8</name><frequency>20</frequency></term>
+<term><name>subject9</name><frequency>10</frequency></term>
 </list>
 <list name="date">
 <term><name>date0</name><frequency>100</frequency></term>
 <term><name>date2</name><frequency>80</frequency></term>
 <term><name>date3</name><frequency>70</frequency></term>
 <term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
 </list>
 <list name="medium">
 </list>
index e988091..abb5f68 100644 (file)
 <term><name>author2</name><frequency>80</frequency></term>
 <term><name>author3</name><frequency>70</frequency></term>
 <term><name>author4</name><frequency>60</frequency></term>
+<term><name>author5</name><frequency>50</frequency></term>
+<term><name>author6</name><frequency>40</frequency></term>
+<term><name>author7</name><frequency>30</frequency></term>
+<term><name>author8</name><frequency>20</frequency></term>
+<term><name>author9</name><frequency>10</frequency></term>
 </list>
 <list name="subject">
 <term><name>subject0</name><frequency>100</frequency></term>
 <term><name>subject2</name><frequency>80</frequency></term>
 <term><name>subject3</name><frequency>70</frequency></term>
 <term><name>subject4</name><frequency>60</frequency></term>
+<term><name>subject5</name><frequency>50</frequency></term>
+<term><name>subject6</name><frequency>40</frequency></term>
+<term><name>subject7</name><frequency>30</frequency></term>
+<term><name>subject8</name><frequency>20</frequency></term>
+<term><name>subject9</name><frequency>10</frequency></term>
 </list>
 <list name="date">
 <term><name>date0</name><frequency>100</frequency></term>
 <term><name>date2</name><frequency>80</frequency></term>
 <term><name>date3</name><frequency>70</frequency></term>
 <term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
 </list>
 <list name="medium">
 </list>
index a8f2b85..a872155 100644 (file)
 </term>
 </list>
 <list name="author">
-<term><name>author0</name><frequency>100</frequency></term>
-<term><name>author1</name><frequency>90</frequency></term>
-<term><name>author2</name><frequency>80</frequency></term>
-<term><name>author3</name><frequency>70</frequency></term>
-<term><name>author4</name><frequency>60</frequency></term>
+<term><name>Jack Collins</name><frequency>2</frequency></term>
+<term><name>Mairs, John W</name><frequency>1</frequency></term>
+<term><name>Wood, Helen M</name><frequency>1</frequency></term>
+<term><name>Englund, Carl R</name><frequency>1</frequency></term>
 </list>
 <list name="subject">
-<term><name>subject0</name><frequency>100</frequency></term>
-<term><name>subject1</name><frequency>90</frequency></term>
-<term><name>subject2</name><frequency>80</frequency></term>
-<term><name>subject3</name><frequency>70</frequency></term>
-<term><name>subject4</name><frequency>60</frequency></term>
+<term><name>Radioisotope scanning</name><frequency>1</frequency></term>
+<term><name>Scintillation cameras</name><frequency>1</frequency></term>
+<term><name>Imaging systems in medicine</name><frequency>1</frequency></term>
+<term><name>Bible. O.T</name><frequency>1</frequency></term>
+<term><name>Bible</name><frequency>1</frequency></term>
+<term><name>Cartography</name><frequency>1</frequency></term>
+<term><name>Puget Sound region (Wash.)</name><frequency>1</frequency></term>
+<term><name>Tomography</name><frequency>1</frequency></term>
+<term><name>Optical pattern recognition</name><frequency>1</frequency></term>
+<term><name>Computers</name><frequency>1</frequency></term>
+<term><name>Railroads</name><frequency>1</frequency></term>
 </list>
 <list name="date">
 <term><name>date0</name><frequency>100</frequency></term>
 <term><name>date2</name><frequency>80</frequency></term>
 <term><name>date3</name><frequency>70</frequency></term>
 <term><name>date4</name><frequency>60</frequency></term>
+<term><name>date5</name><frequency>50</frequency></term>
+<term><name>date6</name><frequency>40</frequency></term>
+<term><name>date7</name><frequency>30</frequency></term>
+<term><name>date8</name><frequency>20</frequency></term>
+<term><name>date9</name><frequency>10</frequency></term>
 </list>
 <list name="medium">
 </list>
index 65287b7..77c902f 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="z3950_indexdata_com_marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 65287b7..77c902f 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="z3950_indexdata_com_marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 6db27c3..c9ac3bd 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="z3950_indexdata_com_marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 636bdff..2876a8b 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="gbv-sru-marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 65287b7..77c902f 100644 (file)
@@ -7,7 +7,6 @@
     
     <service>
       <include src="z3950_indexdata_com_marc.xml"/>
-      <targetprofiles type="local" src="../zeerex/records/"/>
       <metadata name="url" merge="unique"/>
       <metadata name="title" brief="yes" sortkey="skiparticle" merge="longest" rank="6" mergekey="required" />
       <metadata name="title-remainder" brief="yes" merge="longest" rank="5"/>
index 869e779..fd49e92 100644 (file)
@@ -4,7 +4,7 @@
 DEBUG=0   # 0 for release, 1 for debug
 USE_MANIFEST = 1 # Can be enabled Visual Studio 2005/2008
 PACKAGE_NAME=pazpar2
-PACKAGE_VERSION=1.5.5
+PACKAGE_VERSION=1.5.6
 
 # YAZ
 YAZ_DIR=..\..\yaz
@@ -189,7 +189,6 @@ PAZPAR2_OBJS = \
    "$(OBJDIR)\relevance.obj" \
    "$(OBJDIR)\termlists.obj" \
    "$(OBJDIR)\normalize7bit.obj" \
-   "$(OBJDIR)\zeerex.obj" \
    "$(OBJDIR)\database.obj" \
    "$(OBJDIR)\settings.obj" \
    "$(OBJDIR)\getaddrinfo.obj" \
index fd9c37e..8342494 100644 (file)
@@ -13,7 +13,7 @@ if (document.location.hash == '#useproxy') {
     showResponseType = 'json';
 }
 
-my_paz = new pz2( { "onshow": my_onshow,
+var my_paz = new pz2( { "onshow": my_onshow,
                     "showtime": 500,            //each timer (show, stat, term, bytarget) can be specified this way
                     "pazpar2path": pazpar2path,
                     "oninit": my_oninit,
@@ -245,7 +245,7 @@ function drawPager (pagerDiv)
 
     var prev = '<span id="prev">&#60;&#60; Prev</span><b> | </b>';
     if (curPage > 1)
-        var prev = '<a href="#" id="prev" onclick="pagerPrev();">'
+        prev = '<a href="#" id="prev" onclick="pagerPrev();">'
         +'&#60;&#60; Prev</a><b> | </b>';
 
     var middle = '';
@@ -260,14 +260,14 @@ function drawPager (pagerDiv)
     
     var next = '<b> | </b><span id="next">Next &#62;&#62;</span>';
     if (pages - curPage > 0)
-    var next = '<b> | </b><a href="#" id="next" onclick="pagerNext()">'
+        next = '<b> | </b><a href="#" id="next" onclick="pagerNext()">'
         +'Next &#62;&#62;</a>';
 
-    predots = '';
+    var predots = '';
     if (firstClkbl > 1)
         predots = '...';
 
-    postdots = '';
+    var postdots = '';
     if (lastClkbl < pages)
         postdots = '...';