[Allegro] Register-Maskerade

Thomas Berger ThB at Gymel.com
Mo Nov 22 09:42:27 CET 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lieber Herr Fischer,

> nachdem mein Versuch, die Reihung der Zeichen per i-Befehl zu ändern gescheitert ist (dem wäre mal gesondert nachzugehen), sehe ich mir die Registermaskerade an. Gibt es dafür irgendwo eine Anleitung?
> Derzeit mache ich das so, dass ich im Register
> <reduzierter Begriff>|<Originalbegriff>
> eintrage, das funktioniert in der Anzeige sehr schön (dort einfach alles vor '|' entfernen), das Blättern im Register wird so durchaus zum Vergnügen: weder "Muenzen" noch "Munzen" sondern "Münzen" wird angezeigt.

> Unklar ist mir dann aber die Suche.
> Ein erster Versuch, in der Umcodierung der Benutzereingabe (unter #-3)
> einfach ein '|?' anzuhängen, brache keinen Erfolg (warum eigentlich nicht?).

"?" wird vorher abgetrennt, ein im Umcodierungsabschnitt gesetztes "?"
hat keinen Effekt als Trunkierungszeichen.

> Nachbearbeitung auf Seiten der Perl-Scripte ist etwas kompliziert, wenn man
> in der Anfrage auch Boolesche Operatoren und/oder Phrasen zulässt. Alternativ
> könnte man für die Suche ein anderes Register aufbauen als für das Blättern im
> Index, das würde aber die Indexdatei aufblähen.

In den Umcodierungsabschnitten sind wie ueblich mehrere Faelle zu
beruecksichtigen:

1) Eingabe irgendwie (z.B. in Kleinbuchstaben)

  sollte den richtigen Registerabschnitt ansteuern
  bzw. bei trunkierter Suche funktionieren


2) Eingabe genau wie es da hinter "|" steht (z.B. aus
  CGI-Skripten beim Klicken auf einen Link)

3) Eingabe der exakten Indexzeile (ebenfalls in CGI-Skripten)

  die letzten beiden Faelle muessen in der Lage sein, den
  exakten Indexeintrag zu treffen, damit etwa ein find
  wie vorher funktioniert.

Aus einer CGI-Situation kann man allerdings auch eine
Anwendervariable vorbesetzten, die den Umcodierungsabschnitt
dann feiner steuern kann.

Schematisch gehe ich normalerweise ~ungefaehr~ wie folgt vor
(ich habe da keine durchgehende Strategie):

Enthaelt der Suchbegriff den Trenner "|" und etwas dahinter,
wird er mit y0 so wie uebermittelt aufgefasst und ausgefuehrt.
Das ist Fall 3)

Ansonsten:

Suchbegriff wird mit y2 umcodiert, entsprechend dem gewuenschten
Ergebnis fuer den Teil vor dem Trenner "|".

Gibt es die spezielle Anwendervariable zur Steuerung, wird ausserdem
"|" und der nicht umcodierte Orginalsuchbegriff angehaengt (Fall 2).


Bei Recherchen, die von Suchmasken in CGI-Anwendungen her stammen,
faechere ich die Eingaben typischerweise sowieso in mehrere
Alternativen auf, z.B. wenn es ein Personenfeld ist, wird untersucht,
ob *kein* Komma enthalten ist, in dem Fall wird die Eingabe auch noch
einmal invertiert (bei mehreren Worten) bzw. mit nachgestelltem ",?"
aufgeweicht. Auch in Schlagwortfeldern bevorzuge ich "intelligente"
Trunkierung, d.h. nicht ABC? ("Donau*" traefe auch "Donauwelle"),
sondern 'ABC or "ABC /?"' (trifft nur "Donau" und *Ketten* mit Donau
als erstem Kettenglied)

Hier wuerde dann jeder Suchbegriff X als solcher genommen werden muessen,
verODERt mit der Form "X|?".

viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iJwEAQECAAYFAkzqLPMACgkQYhMlmJ6W47NdCQQAlORWE8UU0x/wiT1P2hUePkN/
uw247TnE2ihi0EVIxb0Sv7PLla9kuwS90azuAz8Y9OSv/OebxFdfzXD5Cg+NSB9t
Nlh7kD4s1DZYUwf2yTCKil+mTtKNNIDU54yuHAIhlHKXmewMmCoNkqomASWfWXo8
urzTp+Es/Vt8AzRvYJE=
=AXM4
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste Allegro