Neue Version 0.10 des z3950-Servers
Martin Butkus
m.butkus at tu-bs.de
Fr Jul 25 16:46:08 CEST 2003
Liebe Liste,
inzwischen haben mich einige Verbesserungsvorschläge von
einigen Beta-Testern erreicht, und sind in den Z39.50-Server
eingeflossen. Die Version 0.10, die seit heute auf dem
FTP-Server verfügbar ist, enthält u.a. die folgenden
Verbesserungen:
- einen wichtigen Bugfix für eine nicht funktionierende
TCP/IP-Kommunikation mit dem Avanti-Server, wenn eine
eigene "dict"-Datei verwendet wurde
- eine weniger verwirrende Syntax für die "dict"-Datei.
Einzelne Register werden nun wieder mit "+" getrennt, statt
mit ",". Daher ist die Syntax der "dict"-Datei nun wieder
weitgehend kompatibel mit der entsprechenden Datei des
alten Z3950-Servers.
Beim Update von den Versionen 0.7 bis 0.9 ist darauf zu achten,
daß die "dict"-Dateien einer bestehenden Installation per Hand
angepaßt werden müssen. Beispiel:
1017 = |1, |3, |4 # alt
wird zu
1017 = |1 + |3 + |4 # neu
- Unterstützung für diverse BIB-1 Strukturattribute (BIB-1 Attribut 4).
Es werden Word, Phrase, String, Key und Wordlist unterstützt.
Im letzteren Fall (Wordlist) wird der Suchbegriff als eine
"und"-verknüpfte Liste von Suchworten aufgefaßt.
Beispielanfrage im yaz-client, und die jeweilige Übersetzung in
einen Avanti-Suchbefehl:
find @attr 4=6 "Apfel Baum" # Wortliste
--> find ( ( ( TIT "Apfel" ) or ( PER "Apfel" ) ) and
( ( TIT "Baum" ) or ( PER "Baum" ) ) )
In allen anderen Fällen (Phrase, String, ...) wird der Suchbegriff
immer als vollständiger String aufgefaßt:
find @attr 4=1 "Apfel Baum" # Phrase
--> find ( ( ( TIT "Apfel Baum" ) or ( PER "Apfel Baum" ) )
- Begrenzte Unterstützung für die Verwendung von "Wildcards" in
Suchausdrücken.
Das Wildcard-Symbol ist das Raute-Zeichen '#' und wird nur
dann als Wildcard-Symbol verarbeitet, wenn das BIB-1
Attribut 5 = 101 ("wildcard truncation") gesetzt wird.
Bei der Wildcardsuche wird aber nur die *Rechts*trunkierung von
Phrasen oder von Wörtern in einer Wortliste unterstützt.
Grund hierfür ist, daß Allegro nur die Rechtstrunkierung unterstützt.
Die Wildcard-Anfrage "Jugoslaw#" würde also akzeptiert.
Beispiele für *nicht* akzeptierte Wildcard-Abfragen:
"#goslawien" (Linkstrunkierung)
"#goslaw#" (Links- und Rechtstrunkierung)
"Jugo#awien" (Trunkierung 'in der Mitte')
In solchen Fällen kommt es zu einer Fehlermeldung.
Der Sinn dieses Features ist es, in Verbindung mit dem Strukturattribut
"Wortliste" (siehe oben) nur einzelne Wörter in einer Wortliste der
Rechtstrunkierung zu unterwerfen.
Beispiel für eine Suche in einer Wortliste mit selektiver
Rechtstrunkierung:
find @attr 4=6 @attr 5=101 "Apf# Baum Wurz#"
--> find ( ( ( TIT "Apf?" ) or ( PER "Apf?" ) ) and
( ( TIT "Baum" ) or ( PER "Baum" ) ) and
( ( TIT "Wurz?" ) or ( PER "Wurz?" ) ) )
Damit diese selektive Trunkierung funktioniert, muß
in der z3950.cfg "search_truncate = no" gesetzt sein.
Ansonsten wird grundsätzlich jedes Wort rechtstrunkiert.
Vielen Dank für die bisherigen Rückmeldungen und weiterhin
viel Spaß beim Testen! :)
Freundliche Grüße,
Martin Butkus
Mehr Informationen über die Mailingliste Allegro