[Allegro] Vb.197: Volltextsuche voll ausgebaut
Bernhard Eversberg
ev at biblio.tu-bs.de
Fr Jan 19 09:02:30 CET 2007
Verlautbarung 197 der Entw.Abt. 2007-01-19
-------------------------------
Das neue Gesamtpaket steht bereit: (auch N-Version und DemoPaket)
http://www.allegro-c.de/newvers.htm
SonderTip: Alles sofort ausprobieren: Menue "Finden / Volltextsuche"
27.1 - Keine runde Zahl, aber eine abgerundete Version
------------------------------------------------------
Die V27.0 hat in den ersten zwei Wochen einige Haertetests durchstehen
muessen. Wie das immer so ist, zeigten sich in realen Situationen
noch eine Anzahl von Kleinigkeiten, Randerscheinungen allzumal, die
sich leicht bereinigen liessen. Die meisten Korrekturen waren in
FLEXen und Hilfetexten zu taetigen, nicht in den Programmen, doch auch
diese erfuhren noch Verbesserungen. So konnte es bei hierarchischen
Saetzen zu Fehlern beim Suchen kommen, wenn die Datenbank mit V14-
Verknuepfungen arbeitet - Woerter in Untersaetzen wurden dann nicht
immer gefunden.
Erheblicher Aufwand wurde jedoch investiert in die 5 neuen FLEXe, mit
denen das Potential der RegEx-Suche ausgebeutet wird. Diese
beschreiben wir weiter unten. Sie sollen als brauchbare Werkzeuge so
vielseitig und zuverlaessig sein wie nur irgend moeglich, aber auch
bequem zu nutzen.
Komplexe Fertig-FLEXe
---------------------
Es gibt fuenf FLEXe fuer komplette Anwendungen mit der RegEx-
Technik. Diese eignen sich auch als Anregungen, und sie enthalten
ausfuehrliche Kommentare.
Der neuen Menuepunkt "Finden / Volltextsuche" gewaehrt jetzt die
Auswahl unter diesen Funktionen und startet sie (bis auf GREP):
FTR.FLX
Volltext-RegEx-Suche in der Gesamtdatenbank
RSFSR.FLX
"Result Set Fulltext Search RegEx" (Oder was dachten Sie?)
Durchsucht die aktuelle Erg.Menge mit RegEx. (Besser als die Funktion
im Fernglas-Menue, die aus Gruenden der Kompatibilitaet noch nicht
geaendert wurde, und weil sie u.U. etwas schneller ist.)
Verwendet rsfsr.inc fuer die eigentliche REGEX-Funktion, s.u.
ALGSRCH.FLX
Volltextsuche in allen, mehreren oder einer ausgewaehlten
Grunddatei mit RegEx.
Verwendet algsrch.inc, siehe unten
XGREP.FLX
Erweiterte Version von GREP. Es erscheint eine Ergebnisliste, in der
man jeweils einen Flip "Show" fuer jede Fundstelle hat. Klick auf
ein "Show" blaettert die Datei genau an der Fundstelle auf.
Wahlweise werden die verschiedenen Arten von Parametern, CFG,
Hilfetexten etc. durchsucht. In mancher Hinsicht besser als
die bisherige Verlautbarungs-Volltextsuche, die aber auch noch
da ist.
GREP.FLX fuer manuellen Aufruf
Durchsuchen von Textdateien nach Textmustern. Der Aufruf ist
X grep textmuster dateinamensmuster
Alle fuenf koennen auch mit X name ? aufgerufen werden, um Hilfe zu
erhalten. Alle fuenf sind voellig gefahrlos, es wird nichts in
die Datenbank gschrieben - einem spielerischen Ausprobieren steht
mithin nichts im Weg. Beginnen Sie mit X xgrep ? , waehlen Sie
aus der Liste die Zeile "Verlautbarungen" und dann geben Sie
als Suchbegriff ein: isbn + 13 oder fuellhorn.
Folgende Einzelheiten scheinen ausserdem mitteilenswert:
0. Der neue Menuepunkt "Finden / Volltextsuche" startet jetzt
fulltext.flx, nicht mehr ftr.flx
1. display z<num> NEU
Positioniert den Text im Anzeigefeld auf die Zeile <num>
2. Befehl xchg geaendert in xcode
Der bis dahin noch nicht in StandardFLEXe eingebaute neue Befehl
dient dazu, den momentanen Inhalt der iV mittels einer der
Exporttabellen umzucodieren. Doku: h xxcode
3. set q<num> NEU
Damit springt man im Offline-Speicher zum Satz mit der laufenden
Nummer <num>. Die Zaehlung beginnt mit 0, also set q0.
Bisher konnte man nur auf den ersten oder letzten Satz
positionieren (first off / last off) und dann vor- bzw.
rueckwaerts mit next off / prev off.
set q0 ist also dasselbe wie first off.
Mit var o (das gab es schon) kann man sich die laufende
Nummer des aktuellen Offline-Satzes besorgen, diese irgendwo
speichern und dann spaeter zu diesem Satz zurueckkehren:
var o
ins #uno
...
var "q" #uno
set
4. Hilfetext xsrx.rtf fuer den neuen Befehl srx
Dieser wurde deutlich vergroessert. Er enthaelt jetzt Rezepte
fuer vier Situationen, in denen eine RegEx-Suche nuetzlich sein kann
- Suche im aktuellen Datensatz
- Volltextsuche in der Gesamtbank
- Volltextsuche in einer Grunddatei
- RegEx-Suche in Textdateien
Die Rezepte bestehen aus wenigen Zeilen, die man direkt abkupfern
kann. Zwei einbindbare Unterprogramme, die ihre eigene Dokumentation
enthalten, sind dafuer noetig. Man braucht sie aber weder zu
verstehen noch anzupassen:
ftr.inc : Suche in der Gesamtbank
algsrch.inc : Suche in einer ALG-Datei
rsfsr.inc : Suche in der aktuellen Ergebnismenge
Muehelos kann man damit nun einige hochkomplexe Funktionsablaeufe
in eigene FLEXe einbinden. Insbesondere kann man dadurch auf
Batchdateien verzichten, die man bisher brauchte, um Exporte mit
SRCH.EXE in eigene Prozeduren einzubauen.
5. Die Befehlsuebersichten xa.rtf und xaf.rtf sowie die ViewListe
flex.vw wurden aktualisiert, ebenso ftr.rtf, die umfassende
Darstellung des RegEx-Konzepts. Geben Sie ein: h ftr
Und noch 4 Kleinigkeiten
------------------------
1.
Zu den Befehlen ansi/asci kommen noch ANSI/ASCI
Jeder dieser Befehle leistet eine Umcodierung des iV-Inhalts:
ansi : Tabelle o der Indexparameter von rechts nach links
asci : dieselbe umgekehrt
ANSI : Tabelle o der Anzeigeparameter von rechts nach links
ASCI : umgekehrt
Wenn also in den Indexparametern steht
o .132 228
dann wird durch ansi der Wert 132 in 228 verwandelt, durch
asci aber 228 in 132.
2.
Indexeintraege mit -> bewirken, dass umgeblaettert wird auf das,
was dahinter steht. Dies klappte nicht korrekt, wenn darin ein
Sonderzeichen vorkam, Umlaute o.a. Jetzt geht das.
3.
Beim Befehl if %...% kam es zu einem Fehler, wenn zwischen %...%
ein Spatium auftrat. Ebenso war es bei if _..._
Die Ursache wurde an der Wurzel gepackt, das Aergernis ausgemerzt.
4.
Bekanntlich kann man in das Schreibfeld mehrere Zeilen mit
je einem Datenfeld eingeben oder kopieren, bis hin zu ganzen
Datensaetzen (copy&paste). Nur bei hierarchischen Saetzen klappte
das nicht, sie vermischten sich dann recht unerquicklich.
Dies wurde behoben.
5.
Mit var V14 erhaelt man jetzt die Werte i5 und i6 der Index-
parameter, z.B. _9 oder _: falls _ das Steuerzeichen i5 ist
und 9 bzw. 10 die Registernummer i6.
Mehr Informationen über die Mailingliste Allegro