[Allegro] Vb.319 : Schneller Hochpotential-Job : srch.job [NEU!!]

Bernhard Eversberg b-eversberg at gmx.de
Di Mär 3 11:53:26 CET 2020


Verlautbarung 319 zur allegro-Entwicklung                    2020-03-03
-----------------------------------------

Kein neues Programm, nur 2 neue Dateien:
   srch.job und srch.apr
Abzuholen per a99 mit  X gf ...

Schneller Hochpotential-Job : srch.job  [NEU!!]
--------------------------------------
Wer nur unter Linux arbeitet, hat kein a99. Das kann ein arges
Handicap sein. So gibt es unter a35 zwar die Globale Ersetzung,
aber erst einmal muss man dazu eine Ergebnismenge haben. Die
kann man in a35 mit Volltextsuche nicht so erstellen, dass man
anschließend darauf noch einen FLEX-Job anwenden könnte, um
z.B. einzelne Felder zu ändern oder herauszunehmen aus jedem
gefundenen Datensatz, oder ein neues einzufügen usw. usf. Oder
sogar bestimmte Sätze zu löschen.
Jetzt gibt es einen neuen Job namens srch.job. Er macht, was 
bisher srch.exe konnte, aber er kann noch deutlich MEHR.
Aber Moment, wird jetzt eingewendet: Es gibt doch schon einen
srch.job! Ja, doch der ist elend langsam und aus dem Grund
wurde ja das uralte srch.exe aufgefrischt und beschleunigt.
Nun aber können sowohl der alte srch.job als auch srch.exe weg.

Das MEHR kann z.B. ein Export sein, aber auch die Anwendung
beliebiger Manipulationen, die man mittels FLEX programmieren
kann. Die FLEX-Befehle zu so einer Aktion baut man in den
Job ein an der dafür vorgesehenen Stelle, ohne sonstige Änderungen
zu machen oder einen komplett eigenen Job schreiben zu müssen.
Warum war der alte srch.job so langsam? Weil der die Datenbank-
Dateien Satz für über die interne Nummer geladen hat. Jetzt werden
die .ald-Dateien sequentiell gelesen - wie es srch.exe schon
immer gemacht hat.
Die Methode war schon lange bekannt:
  http://www.allegro-b.de/download/doku/flex/tricks.htm#52
  ("Trick 52: Dateien abklappern")
Das ist erheblich schneller als die Abarbeitung in der Reihenfolge der
internen Satznummern, wie es bisher der fts.job gemacht hat.
Summa summarum hat der neue srch.job ein ungleich größeres Potential 
als jeder andere, und das auch, weil er nicht nur manuell oder per
Batch aufrufbar ist, sondern weil er auch in einer a35-Umgebung
Dienst tun kann. Für die Volltextsuche z.B. musste man bislang srch
invozieren. Damit konnte man aber dann nur exportieren, nicht
irgendwelche anderen Aktionen mit den gefundenen Sätzen ausführen.
In Kürze wird die Volltextsuche von a35 darauf umgestellt, aber es
ergeben sich nun gerade für Web-Oberflächen durchaus neue
Potentiale ... 

Richtig schön am neuen srch.job ist außerdem: Man braucht keine
neue Befehlssyntax zu lernen! Was man bisher so gestartet hat:
         srch -ddemo2\cat_*.ald -sxyz
das geht jetzt so: (-s und -r sind jetzt gleichwertig)
  acon -jsrch -ddemo2\cat_*.ald -sxyz 
Man setzt also schlicht  acon -j  vor den alten Befehl.

Wenn nicht a-cfg benutzt wird, sondern b-cfg, dann die Option
-kb ergänzen.
Wahlweise kann man eine Export-Option anhängen, z.B. -ee-1/ergeb.adt
ACHTUNG: Mehrteilige Suchbegriffe in "..." einschließen.

Boole'sches Beispiel: 
Volltextsuche nach london UND drama in demo2 geht so:
(Merke: Operatoren + - / mit Spatien umgeben)

acon -jsrch -ddemo2\cat_*.ald -r"london + drama" [ -ee-1=dateiname ]

Was aber auch geht:
Suchbegriff "london + drama" befindet sich in Datei sub.txt auf DbDir,
(mit oder ohne "..."). Dann -R statt -r:

acon -jqsrch -ddemo2\cat_*.ald -Rsub.txt -ee-1=...

Der srch.job ist ausführlichst (auf Englisch) kommentiert.
Eigene Befehle für Aktionen mit den gefundenen Daten sind einzubauen
zwischen den Markierungen  :ONE  und  :TWO

ACHTUNG:
Der srch.job braucht die Datei srch.Xpr (passend zu X.cfg)
Darin hat nichts anderes zu stehen als eine Liste von q-Befehlen
für die Zeichen-Umcodierung: Damit wird A zu a, Ä und ä zu ae 
usw. usf. Diese Datei wird im srch.job verwendet, um die
notwendigen Umcodierungen mittels des Befehls  xco xq  sowohl
im Suchbegriff wie auch im Datentext zu erledigen, bevor der
Suchbefehl ausgeführt wird. Diese Parameterdatei ist zu
ändern, wenn man nicht den Standard-ASCII-Code verwendet.
Es wurde mit Erfolg schon eine  srch.lpr  für Chinesische 
UTF-8-Daten ertellt. Solche Daten waren bislang einer Volltext-
Suche mit srch noch gar nicht zugänglich gewesen ...


****************************************************************************

Fußnote

Gunter Dück  (https://de.wikipedia.org/wiki/Gunter_Dueck)
schrieb vor kurzem: (im SPIEGEL Nr.7(8.2.2020) S. 67)
"Unter Zeitdruck lassen sich keine Softwareprogramme schreiben,
genauso wenig wie Gedichte"

Da ist was dran. Die allegro-Entwicklung stand nicht oft unter Termindruck,
so konnten nebenher auch ein paar Gedichte entstehen.
Und für den neuen srch.job gab's ausreichend Zeit - dank Ruhestand.




Mehr Informationen über die Mailingliste Allegro