Neue Version 0.10 des z3950-Servers

Martin Butkus m.butkus at tu-bs.de
Mo Jul 28 16:11:50 CEST 2003


In message <4B9987745D7 at buch.biblio.etc.tu-bs.de> you write:

Hallo Herr Berger,

> wichtig faende ich eine Suche, die im Fall "automatisch"
> folgendes generieren kann
> 
> "Apfel" wird zu 
> 
> find ( TIT "Apfel" ) or ( PER "Apfel?" )
> 
> oder sogar
> 
> find ( TIT "Apfel" ) or ( PER "&Apfel,?" )

Gute Idee! Bisher geht das noch nicht, die nächste Version wird es aber
beinhalten. Ich hab's heute schon mal implementiert, will das aber noch 
etwas stress-testen, bevor es freigegeben wird. 

Die Lösung sieht wie folgt aus:

Statt daß den Z3950-Attributen wie bisher bestimmte Allegro-Register 
zugeordnet werden, werden ihnen jetzt ganze Avanti-Suchausdrücke 
zugeordnet, die sich über die "dict"-Datei vorgeben lassen.  

Dabei gibt es jeweils zwei Varianten, eine "mit Trunkierung" und eine "ohne". 

Das sieht dann zum Beispiel so aus: 

  # nicht trunkiert
 
  1    = PER "%s"             		 # Name-personal
  4    = TIT "%s"            		 # Title
  1017 = ( PER "%s" ) or ( TIT "%s" ) 	 # Server-choice (Default)
  ...
  
  # trunkiert
 
  t1 	= PER "%s?"           		 # Name-personal
  t4 	= TIT "%s?"          		 # Title
  t1017 = ( PER "%s?" ) or ( TIT "%s?" ) # server-choice (Default)
  ...

Das "%s" wird jeweils automatisch durch den Suchbegriff ersetzt. 
Dann ist es kein Problem, z.B. auch so etwas zu formulieren:

	1017 = ( PER "%s,?" ) or ( TIT "&%s" ) 	 # Server-choice
	t1017 = ( PER "%s,?" ) or ( TIT "&%s?" ) # Server-choice, trunkiert

Dann würde "find Apfel" bei ausgeschalteter Trunkierung zu: 

	find ( ( PER "Apfel,?" ) or ( TIT "&Apfel" ) ) 

und bei eingeschalteter Trunkierung zu:

	find ( ( PER "Apfel,?" ) or ( TIT "&Apfel?" ) ) 

Das Use-Attribut 1017 ist dabei der "Default-Wert", der dann genommen
wird, wenn bei der Suche keine Angaben gemacht werden.

Wobei sich der Default (Trunkierung an/aus) in der Konfigurationsdatei
z3950.cfg einstellen läßt. Per passendem Z39.50-Attribut kann aber der 
Benutzer jederzeit die Trunkierung an- bzw. ausschalten.

> (und "apfel#" wuerde zu
> find ... ( per "apfel??" )

Nein, sondern zu  ( per "apfel?" ), bzw. ( per "apfel,?" ) wie 
sich's gehört. Wildcards werden aus dem Suchbegriff entfernt und 
intern in Rechtstrunkierungen übersetzt. 

> oder sogar
> 
> find ... ( PER "&Apfel?,?" )

Ist ja grauslich. :>
 
> und duerfte keinen Avanti-Absturz provozieren)

Naja, dafür kann ich dann nicht garantieren. ;)

Freundliche Grüße,
	Martin Butkus	




Mehr Informationen über die Mailingliste Allegro