[Allegro] Vb.305 : 4 kleinere Verbesserungen

Bernhard Eversberg b-eversberg at gmx.de
Mo Jan 14 11:42:24 CET 2019



Verlautbarung 305 zur allegro-Entwicklung                    2019-01-14
-----------------------------------------


INHALT

1. Volltextsuche mit srch.job - Wann sinnvoll?

2. Zufälligen Satz anzeigen

3. Beliebige Angaben aus anderen Quellen einspeisen

4. Kleine Ergänzung in marctxt.apr (ZDB)



1. Volltextsuche mit srch.job - Wann sinnvoll?
----------------------------------------------
Es ist zwar so, daß die Volltextsuche mit srch.exe am schnellsten geht.
Manchmal aber geht sie gar nicht, wenn z.B.das Programm auf einer 64bit-
Plattform nicht läuft, so vor allem unter Linux. Es gibt zwar auch ein
srch64, das klappte aber auch nicht immer! Nun wurde eine neu kompilierte
Variante bereitgestellt unter  allegro-b.de/download/srch64.gz
Die tut es jetzt auf den bisher geprüften Linux-Plattformen.

Wenn's aber mal gar nicht geht:
Dann ist der srch.job die Rettung. Normalerweise braucht man in einem
Aufruf  srch -d... ... -sSUCHBEGRIFF
nur "srch" zu ändern in  "acon -jsrch", also

        acon -jsrch -d... ... -s"SUCHBEGRIFF"

Der SUCHBEGRIFF muß der RegEx-Syntax folgen! Wenn z.B. die Sätze
mit Erscheinungsjahr von 1990 bis 2000 gesucht werden, dann:
 ... -s"#76 >1989 + #76 <2001"
Unter Linux lautet der Aufruf  ./acon ...

Wenn man keine Datei mit der Option -e angibt, geht der Output in die 
Datei  outdat.adt. 
Wenn man den Output direkt sehen will, also keine Datei rauskommen soll,
dann :  acon ... -ee-1=stdout

Die RegEx-Syntax ist dokumentiert in  h ftr  bzw. im Netz:
   http://www.allegro-c.de/bluechyp/regex.htm 


2. Zufälligen Satz anzeigen
---------------------------
Vor längerer Zeit war einmal das Thema "Zufallszahlen erzeugen"
diskutiert worden. Wir hatten dann ein Unterprogramm gemacht namens
":random", eingepackt und mitgeliefert als random.inc.
Es liefert eine 22stellige Zufallszahl. Je nun, was aber, wenn man
eine Zufallszahl zwischen 1 und 1000 haben will oder zwischen 
1 und der aktuellen Gesamtzahl der Sätze in der Datenbank?
Dann ist es das Einfachste, aus der 22stelligen Zahl eine zu machen,
die zwischen 0 und 1 liegt. Das ist nicht weiter schwer:

perf random       ergibt z.B. 1572491635253100324946
var (0,10)
ins $z              1572491635
var "0." $z
ins $z              0.1572491635

und man hat in $z eine Zahl zwischen 0 und 1 mit 10 Nachkommastellen.
(Das sollte reichen für bis zu 10 Mrd. Sätze.)
Diese multipliziert man mit t, der Gesamtzahl der eigenen Datensätze,
und schneidet die Nachkommastellen ab, dann +1. Das Ergebnis liegt 
zwischen 1 und t, beides inclusive. Damit kann man z.B. einen zufälligen
Satz laden, jedesmal einen anderen.
Wie das genau gemacht wird, entnimmt man aus  zufsatz.flx,
abzuholen mit  X gf zufsatz.flx. Kommentare stehen drin, bes. wie man
das Verfahren in eigene FLEXe einzubauen hätte. 
Diesen FLEX selber kann man mit  X zufsatz  sofort ausprobieren:
Es laufen dann zufällige Sätze in der Anzeige durch, einer pro Sekunde.
Abbruch mit Esc.


3. Beliebige Angaben aus anderen Quellen einspeisen
---------------------------------------------------
Wenn man fertige Datensätze als .alg-Datei hat oder als .adt-Externdatei,
dann ist es ja einfach, dafür gibt es bewährte Methoden, vor allem
den update.flx sowie in a99 die Funktion 
   "Datei / Weitere Offline-Datei laden."
Es kann aber passieren, daß man eine irgendwie strukturierte Textdatei
bekommt, aus der man bestimmte Datenelemente in die eigene Datenbank
übernehmen will, und zwar jeweils in bestimmte Datensätze einfügen.
Beispiel: Von der ZDB kann man sich eine Tabelle der eigenen Bestands-
Daten geben lassen, die schlicht aus Zeilen besteht in dieser Form:

ZDB-Nummer^IEigene-IdNr(#00)^IZDB-ExemplarNr

    wobei ^I der Code 9 ist, das TAB-Zeichen

Aufgabe: Die ZDB-Nummern in die eigenen Datensätze übertragen.
Wie man das machen kann, dafür wurde ein Muster-FLEX namens 
einspeis.flx  geschrieben und getestet. Darin stehen Kommentare, die
den ganzen Vorgang ausführlich beschreiben. Für andere Fälle kann
man diesen FLEX beliebig modifizieren.
Ähnlich ist es auch beim WorldCat, da sehen die Zeilen aber so aus:

Eigene-IdNr^IWorldCat-Nr

FLEX abholen mit   X gf einspeis.flx


4. Kleine Ergänzung in marxctxt.apr 
-----------------------------------
Eine ZDB-Nummer in #89Z wird bei VuFind erwartet als

016  7\$aZDB-Nr$2DE-101

(In MARC21 ist 016 das Feld für nationalbibliographische Nummern.)

marctxt.apr wurde entsprechend ergänzt; abholen mit  X gf marctxt.apr





Mehr Informationen über die Mailingliste Allegro