[Allegro] Beobachtungen zu Volltextsuche(n)

Thomas Berger ThB at Gymel.com
Do Aug 1 16:17:23 CEST 2013


Lieber Herr Eversberg, liebe Liste,

ich habe leider die Diskussion neulich nicht verfolgt, wo es
um die Gelegenheiten ging, wann welcher Hilfetext eingeblendet
wird und weiss auch nicht, was sich daraufhin geaendert hat,
also vergleichsweise "frisch" ist.

In einer Ergebnismenge kann man ueber das Fernglas-Menue ("Finde-
Menue" beim Einstieg ueber Menue->Finden) eine Volltextsuche
absetzen, und dort auch nach Unterfeldern suchen, etwa als

#99,▼o

(treffe alle Saetze, die in irgendeinem #99er Datenfeld ein Unterfeld ▼o
haben)

Die Erlaeuterung der Syntax solcher Suchen ist notorisch schlecht
findbar, frueher gab es den Hinweis, dass es dieselbe Syntax wie
fuer die Suchbefehlszeile ist: Positioniert man die Maus dort und
gibt F1, so erscheint die Hilfeseite "cmmd", die dieser Suche einen
Absatz widmet: "." maskiert und Eingabe von Umlauten ist moeglich.

Ueber Menue->Finden gelangt man alternativ zur "Volltextsuche",
da muss man sich entscheiden, ob man suchen will oder die Hilfe
konsultieren ("am besten ausdrucken": Ist /das/ das Ergebnis der
Diskussionen mit Herrn Fischer?). Hier gibt es recht weit am
Anfang den Hinweis, dass Umlaute aufzuloesen sind, spaeter dann
versteckt der Hinweis, dass das stanadardmaessig ueber die
Umcodierung der Indexparameter abgewickelt wird. Das erklaert
natuerlich auch, warum ich nicht nach "▼" suchen kann: Das wird
seit spaeten V23'ern auf "/" abgebildet (Kommentar dazu: wegen
zu ergaenzender Urheber, d.h. die problematische Syntax im
Datenformat zu #20 wird dadurch getoppt, dass die Indexparameter
zu faul sind, diese Situation explizit zu behandeln). Ich kann
also suchen nach

#99.*/o

aber dafuer muss ich vorher die Indexparameterdatei konsultieren,
denn nur dort kann ich nachlesen, dass derzeit "▼" auf "/" umcodiert
wird und ich letzteres daher einzugeben habe. D.h. was fuer "normale"
Suchbegriffe mit Umlauten nur laestig ist (ich bin selber fuer
Kleinschreibung und Umlautaufloesung zustaendig), ist fuer Sonder-
Zeichen schlichtweg aussichtslos.

Die Beispiele in ftr.txt sind konsistent, diejenigen, wo "▼"
vorkommt, schalten via "_" die Umcodierung aus. Suche muss fuer
das obige Beispiel also eingegeben werden als

_#99.*▼o

Einen Weg, tolerant nach "Müller" oder "Mueller" in Unterfeldern
zu suchen, gibt es anders als bei der Volltextsuche ohne regulaere
Ausdruecke wohl nicht (diese kann aber ohnehin nicht "in"
Unterfeldern suchen, hoechstens nach Begriffen irgendwo nach dem
einschlaegigen Unterfeldzeichen, evtl. also in einem folgenden
Unterfeld...).

Unmittelbare Handlungsmoeglichkeiten sehe ich nicht (Handlungsbedarf
jedoch schon: Fuer meinen Geschmack muss ein Nutzer viel zu viel
wissen, um halbwegs erfolgreich suchen zu koennen), mittel- oder
langfristig gibt es jedoch einige Moeglichkeiten:

* Zunaechst einmal bedarf es einer regular expression library, die
  die Treffer markieren kann: Sei es fuer Ersetzungen oder fuer
  Syntax-Highlighting: Derzeit bekommt man ja nur ja/nein-Antworten,
  der Suchbegriff ist im Satz / im betrachteten Ausschnitt ein
  Treffer, aber welche Zeichenkette in welchem Datenfeld, ob ein
  oder mehrere Treffer vorliegen: Das kann nicht ermittelt werden.
  Und solange dem so ist, braucht es die zahllosen anderen Ersetzungs-
  befehle, von denen niemand so genau weiss, welche syntaktischen
  Spezialitaeten da gelten.

* die "bibliothekarische" (deutsche Telephonbuch)-Umcodierung "ue"
  vs. "ü" ist in unserer Tradition wichtig, aber das "ü" koennte auch
  als "ü" oder "ü" oder separat als Diaerese plus u in
  diversen Codierungen erfasst sein: Je nach gewaehlten V23-Einstellungen
  und Quelle von Fremddaten ist das in realen Datenbanken zu $A.CFG
  bereits alles moeglich, vorgesehen und implementiert: Gewisse Normierungen
  vor dem eigentlichen Vergleich werden also zunehmend wichtiger.
  Sie duerfen m.E. aber nicht willkuerlich sein, sich insbesondere
  nicht auf Sonder- und Steuerzeichen beziehen und muessen den
  Suchbegriff (genauer: Seine textuellen Terme) auch beruecksichtigen.
  Sobald in den allegro-Modulen intern staerker mit UTF-8 gearbeitet
  wird, haben wir hier die Unicode-Semantik uebernommen, d.h. es gibt
  Regeln und Tabellen, die Aequivalenzen bestimmen, "zugehoerige" Gross-/
  Kleinbuchstaben deklarieren, definierte Normalformen und vieles mehr:
  Man muss da nicht alles neu erfinden.

* Da "Markieren des getroffenen Abschnitts" und "Normierung vor dem
  Vergleich" tendenziell im Konflikt stehen (extremes Beispiel: Von
  Zeichen, die ich ganz ausblende, kann ich nicht entscheiden, ob
  sie unmittelbar vor dem Treffer stehen oder an seinem Anfang),
  haengt ansonsten viel von den Faehigkeiten der Library ab: Diese
  wird bestimmen, welche Vorab-Aufbereitung der Suchterme erforderlich
  ist und welche Stellschrauben es gibt.

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro