Indexeinträge ohne Parameter einspeisen oder löschen

 

ixadd nummer  |iabc                     i = 1 2 ... 9 : ;

ixadd nummer  ~ziabc                  z = Kennbuchstabe eines  MultiX-Index 

ixadd nummer  SYMabc              

Die Zeichenfolge abc in das Register i einordnen, und zwar mit der Satznummer nummer (d.h. so, als ob der Satz mit dieser internen Nummer einen solchen Registereintrag hätte).

Die nummer darf fehlen, dann gilt die des aktuellen Satzes.

Die nummer 0 wird in 2000000000 gewandelt, eine real nicht mögliche Nummer.

Achtung: ein Leerzeichen muß nur vor und hinter die nummer, nicht vor abc.

Das gewünschte Register kann somit über seine Ziffer i, aber auch über einen symbolischen Namen (wie in den Indexparametern definiert) angesprochen werden. Hat das symbolische Register ein Präfix, wird es automatisch hinzugefügt, d.h. abc  darf dann das Präfix nicht enthalten, es würde ja sonst verdoppelt.

Hinweis: Eine Umcodierung der Eintragung abc erfolgt nicht, sie muß also im FLEX-Befehl so stehen, wie sie ins Register hinein soll. Entsprechendes gilt für den umgekehrten Befehl:

 

ixdel nummer  |iabc

...

Mit  del  statt  add  macht man die umgekehrte Aktion, d.h. man entfernt die Eintragung aus dem Register.

Auch hier sind alle drei Formen möglich.

Übrigens: Ab Berechtigung 5 kann man Indexeinträge mit der Taste [Entf] löschen.

 

Mit  if no ... kann man in beiden Fällen prüfen, ob es nicht geklappt hat. Das trifft auch zu, wenn der betr. Schlüssel mit der genannten Satznummer schon drin (bei ixadd) bzw. nicht drin ist (bei ixdel).

 

close index  Sehr wichtig! Diesen Befehl unbedingt geben, wenn man mehrere ixadd und/oder ixdel gemacht hat. Zu empfehlen ist auch, vorher

set tbl loc   und hinterher   set tbl fre 

zu geben , um zu verhindern, daß jemand in der Zeit einen Satz speichert, denn dabei würden ja ebenfalls Indexmanipulationen durchgeführt, da könnte etwas durcheinandergehen...

 

Wenn hinter  ixadd  nichts steht, wird der Inhalt der iV genommen, d.h. man kann schreiben:

var "|4" #29  oder  var "TAF" #29

xcode iq

ixadd

um den Inhalt von #29 in das Register 4 (symbolisch TAF) einzufügen, vorher aber mit der q-Tabelle umzucodieren.

 

Wenn man die  nummer  wegläßt, wird die Satznummer des gerade aktuellen Satzes genommen. Wozu sollte das gut sein? Nicht immer ist es wichtig, die Einträge einem bestimmten Satz zuzuordnen! Z.B. dann nicht, wenn die Einträge eine Hilfsfunktion haben sollen, wie etwa Ersetzungsschlüssel oder Verweisungen. Das bedeutet, man kann damit solche Schlüssel auch ohne besondere Datensätze einschleusen.

 

ABER: Beim Erneuern des Index sind solche Schlüssel anschließend verschwunden - sie ergeben sich ja allesamt nicht aus irgendwelchen Datensätzen und können deshalb nicht aus diesen heraus neu entstehen.

 

Beispiel 1:

Ein mitgelieferter FLEX namens   ixa.flx   ermöglicht das manuelle Einspeisen in jedes der physischen und symbolischen Register; die eingegebenen Einträge werden in eine Datei ixa.ixa zusätzlich gespeichert, beim Neuaufbau des Index wird diese ¦Datei dann zum Abschluß der Aktion erneut eingespeist.

Tip: Will man bestimmte, nicht aus Datensätzen entstehende Sonderschlüssel dauerhaft im Index haben, kann man sie auch als u.U. sehr lange Liste von ixadd-Befehle in einen FLEX schreiben, den man gleich nach einer Index-Erneuerung ablaufen läßt.

Aber ACHTUNG: Ein FLEX kann maximal 256.000 Byte groß sein. Deshalb ist es besser, die Sonderschlüssel aus der Datei zeilenweise einzulesen und dann mit ixadd  einzuspeisen. Ein solcher FLEX kann so aussehen, wenn die Datei nur die Datenzeilen ohne das Wort ixadd enthält:

 

open dateiname

if no end

:loop

get

if cancel jump ende

ixadd

jump loop

:ende

 

Beispiel 2:

Der FLEX  umindex.flx  kann die Indexierung einer Ergebnismenge auf eine andere Index-Parameterdatei umstellen. Das ist sinnvoll, wenn man die Indexparameter geändert hat, die Datenbank aber sehr groß ist und die Änderungen nur eine bestimmte Ergebnismenge betreffen. Das geht dann viel schneller als eine Neu-Indexierung der Gesamtbank.