Restriktionen: neu in V15
Bernhard Eversberg
EV at buch.biblio.etc.tu-bs.de
Mo Apr 14 15:11:21 CEST 1997
Restriktionen : eine neue Funktion von V15 - gekuerzter Vorabdruck -
------------------------------------------
(Text wurde auf dem Expertentreffen verteilt und wird
vollstaendig in "news" 46 erscheinen. )
Kataloge wachsen mit den Bestaenden, und so wachsen zwangslaeufig auch die
Ergebnismengen, die bei logischen Kombinationen entstehen. Der haeufigste
Wunsch ist es dann vermutlich, die Suche auf die neueste Literatur zu
begrenzen. Genau das konnte man bisher mit allegro kaum machen. Zwar
kann man die Erscheinungsjahre indexieren (bei CAT.API geschieht dies im
Register 6), aber eine Begrenzung der Ergebnismengen mit Bedingungen wie
"nach 1990" oder "vor 1850" ist damit nicht erreichbar. Ein weiterer Wunsch
ist die Einschraenkung nach Sprache oder Publikationstyp. Auch solche
Elemente kann man indexieren, aber die Ergebnismengen unter solchen
Eintraegen werden zu gross, sobald man eine Datenbank mit einigen -zigtausend
Datensaetzen hat. Andere Systeme kennen Suchbeschraenkungen schon lange.
An der Endbenutzer-Oberflaeche haben die Systeme in der Regel zusaetzliche
Schalter, Auswahllisten oder Eingabefelder fuer Sprache, Typ oder
Erscheinungsjahr. Es gibt keine allgemein uebliche Bezeichnung fuer solche
Funktionen. Z.B. wird von "Sekundaeraspekten" gesprochen, im Englischen
nennt man derlei Elemente meistens "qualifier", manchmal findet man auch
recht unanschauliche Namen wie z. B. bei Pica "ADI" (Additional
Discriminative Information). Um einen moeglichst knappen, praegnanten und
unverwechselbaren Begriff zu haben, wurde fuer allegro der Terminus
Restriktionen ausgewaehlt.
Um Restriktionen endlich auch unter allegro moeglich zu machen, musste ein
neues Konzept her, denn die bisherige Indextechnik ist in dieser Richtung
nicht ausbaufaehig. Das neue Konzept sollte natuerlich einerseits flexibel sein,
also unter jeder Konfiguration fuer jeden gewuenschten Zweck parametrierbar,
andererseits sollte der Aufwand so gering wie moeglich sein.
Die unter diesen Vorgaben nunmehr realisierte Loesung ist eine Ergaenzung,
keine AEnderung der Indexierungstechnik. An bestehenden Indexparametern
braucht nichts veraendert zu werden, bestehende Indexdateien funktionieren
unveraendert weiter. Es kommen nur ein paar neue Befehle und eine neue
Datei hinzu. Diese erhaelt den Typ .RES (fuer Restriktionen), also z.B.
CAT.RES. Im Prinzip wird sie genauso erzeugt wie die Kurztiteldatei vom
Typ .STL.
Die Grundidee ist diese: man hinterlegt in der Datei .RES fuer jeden Datensatz
ein paar Bytes fuer die Restriktionen, die es geben soll. Zum Beispiel: 4 Bytes
fuer das Erscheinungsjahr, 3 Bytes fuer die Sprache, 1 Byte fuer den
Publikationstyp. Das Programm (APAC, PRESTO, AVANTI etc.) kann
hernach diese Bytes benutzen, um fuer jeden Satz festzustellen, ob er zur
Ergebnismenge gehoeren soll oder nicht. Es gibt damit einen sehr erwuenschten
Zusatzeffekt: wenn die Restriktion bereits eingeschaltet wird, bevor eine
Ergebnismenge gebildet wird, dann wird diese von vornherein kleiner. Somit
kann eine Suche auch dann noch Erfolg haben, wenn es im Index z.B. unter
einem Stichwort viele -zigtausend Eintraege gibt. Allerdings kann die Bildung
der Ergebnismenge dann etliche Sekunden dauern, weil ja fuer jeden Eintrag
zusaetzliche Vergleiche noetig sind. Ohne eingeschaltete Restriktion aendert sich
an der Geschwindigkeit nichts.
Was muss man tun?
Wie produziert man die Eintraege fuer die .RES-Datei? Ganz genau wie fuer die
.STL-Datei muss man bestimmte Zusaetze in die Indexparameter einbauen:
ir=k Laenge des Restriktionsschluessels (entsprechend i0 bei .STL)
Wenn ir gesetzt ist, wird Datei dbn.RES angelegt, d.h. ir
darf nicht vergessen werden!
ak=zz+/ ak-Befehl fuer den "Restriktionsschluessel" (entspr. ak=zz+0
bei .STL)
#-/ Abschnitt fuer die Erstellung des Restriktionsschluessels.
Dieser muss das Praefix "|/" erhalten.
... (entspr. #-0 und Praefix "|0" bei .STL)
Fuer die Benutzung (APAC, avanti) kommen noch Hilfszeilen dieses Typs
hinzu (ebenfalls in der .API)
R XXX mp "Text zu dieser Restriktion?Hilfszeile dazu"
XXX symbolischer Name der Restriktion, z.B.
ERJ fuer Ersch.Jahr
m 'r' oder 's' (d.h. die zugehoerigen Werte
sind in .RES bzw. .STL)
p Position 1..72 (in .RES bzw. .STL), wo
die Werte stehen
"Text.." wird z.B. von APAC fuer das Menue
benutzt, die Hilfszeile erscheint unten
z.B.
R ERJ r1 "Erscheinungsjahr?Wenn Sie nur neuere oder aeltere Titel wollen"
Das bedeutet: man hat im .RES-Schluessel auf Position 1 das Erscheinungsjahr.
Die R-Befehle werden in APAC zu einem Auswahlmenue verarbeitet (s.u.).
Dem avanti-Server ermoeglichen sie das Abarbeiten von Befehlen wie find
... erj >1990 (s.u.), denn der Server muss ja wissen, was "erj" bedeutet.
Fuer sich genommen bewirken die R-Zeilen aber gar nichts: die Struktur der
.RES (und evtl. .STL) muss damit uebereinstimmen, sonst kann die Sache nicht
funktionieren. Hauptsaechlich kommt es also auf den Abschnitt unter #-/ an.
Es gibt sogar die Alternative, sich keine dbn.RES zu leisten, sondern nur
Teile innerhalb der bestehenden .STL fuer diesen Zweck zu nutzen. Dann sind
keine zusaetzlichen Massnahmen noetig, nur die R-Zeilen, und zwar mit einem
's' statt 'r' an der Position m. Die .STL muss dann natuerlich geeignete
Bestandteile haben, die immer an derselben Position stehen. Jede Position von
1 bis 72 ist dafuer nutzbar.
Nachteil: Zugriffe auf dbn.STL sind viel langsamer auf dbn.RES. (bis ca.
Faktor 10)
Beides kann kombiniert werden, d.h. es kann R-Zeilen mit 'r' und andere mit
's' geben.
Neue Funktion fuer Index
Der Aufruf INDEX -fx ... produziert die .RES-Datei (analog -fs fuer
die .STL)
Wenn der Index erneuert wird (mit -fi, -f7 oder -fn) wird die .RES
automatisch mit erzeugt, genau wie auch die .STL. (Leider konnte man nicht
-fr nehmen, weil dies schon fuer das Entlueften belegt ist.)
Im CockPit von V15 wird es einen eigenen Menuepunkt unter "organisieren"
geben.
B.E. 970410
Mehr Informationen über die Mailingliste Allegro