Groesser/Kleiner-Suche

Bernhard Eversberg ev at buch.biblio.etc.tu-bs.de
Di Jun 1 09:32:01 CEST 2004


Momentan wird eine Version V24.42 vorbereitet, welche die definitive V24 abloesen 
wird. Die Notwendigkeit dazu ergab sich daraus, dass man fuer bestimmte Zwecke die
"Groesser/Kleiner-suche auch in den normalen Registern braucht.
Hier ein Vorabdruck der Vb.178:


Verlautbarung 178 der Entw.Abt.                           2004-06-02
-------------------------------

V24.42 : Letzte Fragen jetzt beantwortbar
=========================================
Oder: V24 fuer gehobene Ansprueche
[Anwender mit Normalanspruechen sind nicht betroffen]

"42" ist die Antwort auf die letzten Fragen des Universums, wie
aus dem Buch "Hitchhiker's Guide to the Galaxy" von Douglas
Adams zu erfahren ist. 
Es gab nun immer noch Fragen, die sich mit a99/avanti
schlecht oder kaum beantworten liessen. Diese letzten Fragen
sind die Groesser/Kleiner- oder auch Von/Bis-Fragen.
"Welches sind die Buecher, deren Verfassername mit 'Bu'
bis 'Dri' beginnt?" kommt hoechst selten vor. Aber Fragen wie
"Welche Saetze wurden vom 15.10.2000 bis 21.8.2001 erfasst?"
werden schon oefter gestellt, und erst recht (OAI-Schnittstelle!):
"Welche Saetze wurden seit dem 1.4.2004 erfasst?"

Das Gemeinsame dieser Fragen ist, dass sie sich nicht durch
Trunkierung erledigen lassen. In a99 ist es zwar moeglich,
durch geschickte Wahl der Trunkierung die relevanten Register-
zeilen dann alle manuell "einzusammeln" (mehrfach Druck 
auf / = ODER). Mit FLEX oder avanti stand man aber dann doch 
im Regen.

In urlaubsbedingt entspanntem Umfeld gelang es nun, die
letzten Fragen nochmals ganz neu anzudenken, Grobentwuerfe
verschiedener Art auf Bierdeckeln zu skizzieren und den ganzen
Problemkomplex endlich einer Loesung zuzufuehren.

Die Sache geht nun so, und zwar fuer jedes Register XYZ:
(logische Reg. genau wie echte, also z.B. |7 )

find XYZ A---B
wobei A und B beliebige Zeichenketten sind.

Eine solche Von-Bis-Abfrage, beliebig mit anderen Fragen zu
kombinieren, bewirkt folgendes:
Im Register XYZ werden alle Eintraege eingesammelt, die
zwischen A und B (einschliesslich) liegen.
Wenn B fehlt, dann alle bis zum Ende des Registers.
A darf nicht fehlen.

Etwas genauer: der erste Eintrag ist derjenige, der
exakt A lautet, der letzte derjenige, der exakt B
lautet. Ein Eintrag, der mit A beginnt (und laenger
ist als A) gehoert dazu, ein Eintrag, der mit B
beginnt und laenger ist als B, gehoert nicht dazu.

Will man, dass der exakt A lautende Eintrag nicht
dazugehoert, muss man z.B. A0 schreiben. Soll der
exakt B lautende Eintrag nicht dazugehoeren, muss
man fuer B eine Zeichenfolge waehlen, die ganz dicht
vor B laege (und u.U. gar nicht vorkommt). Wenn also
z.B.  B = Dri waere, muesste man etwa  B = Drhzzz  
waehlen.
(Haette man, um diese Komplikation zu meiden, die
Logik ein wenig geaendert, ergaebe sich ein 
entsprechendes Problem fuer andere Sonderfaelle.)

Die Wahl von --- als Syntaxzeichen mag willkuerlich
erscheinen, wurde jedoch nach einiger Diskussion
als am wenigsten problembehaftet eingestuft (wenn
man z.B. an CGI-Uebermittlung denkt).
Wer also Registereintraege hat, die --- enthalten,
und solche Eintraege in Von/Bis-Abfragen einbeziehen
will, muss hier kurz innehalten, doch ist es wenig
wahrscheinlich, dass die Sache dann unloesbar wird.



Bernhard Eversberg
Universitaetsbibliothek, Postf. 3329, 
D-38023 Braunschweig, Germany
Tel.  +49 531 391-5026 , -5011 , FAX  -5836
e-mail  B.Eversberg at tu-bs.de  




Mehr Informationen über die Mailingliste Allegro