Suchworte in Allegro "fett" anzeigen lassen
GDachnowsky at t-online.de
GDachnowsky at t-online.de
Mi Mär 19 10:00:36 CET 2003
Lieber Herr Deblon,
vielen Dank für Ihre Mühe, ich muss zwar zugeben, dass ich bis zu
einem
ausreichenden Verständnis der Allegro-Programmierung wohl noch ein
paar
Jährchen vor mir habe, doch unser Datenbankprogrammierer wird Ihre
Zeilen zu würdigen wissen.
Nochmals besten Dank
Gangolf-T. Dachnowsky
Christoph Deblon schrieb:
> Von: GDachnowsky at t-online.de
> An: "Diskussionsliste Allegro-C"
> <allegro at buch.biblio.etc.tu-bs.de>
> Betreff: Suchworte in Allegro "fett" anzeigen
> lassen
> Datum: Mon, 24 Feb 2003 11:33:44 +0100 (CET)
> Antwort an: allegro at buch.biblio.etc.tu-bs.de
>
> > Das Deutsche Volksliedarchiv will seine Datenbestände
> in
> > eine Allegro Datenbank überführen.
> >
> > Als Praktikant in der Wissenschaftlichen Dokumentation
> kümmere
> > ich mich um Datailfragen.
> >
> > Ein Wunsch von den meisten Mitarbeitern ist es, dass
> Suchworte in
> > der Ergebnisanzeige "fett" erscheinen. Wie lässt sich
> dies mit Allegro
> > verwirklichen.
> >
> > Gruss,
> >
> > Gangolf-T. Dachnowsky
> > Deutsches Volksliedarchiv
>
>
> Lieber Herr Dachnowsky,
>
> ich hatte schon mal kurz geantwortet, aber das war nicht
> viel mehr
> als die Behauptung "es geht".
>
> Inzwischen habe ich mich nochmals etwas mit der Frage
> befasst
> und kann ihnen nun eine Art Parametrier-Geruest schicken,
> das
> vielleicht Anregungen bietet.
> Es sollen die Suchworte markiert werden, die man bei
> einer
> Suchfrage im Findmenue eingegeben hat, aber es wird auch
> ein
> Indexeintrag, ueber den man zugegriffen hat, im Text
> markiert,
> sofern er dort vorkommt.
>
> Die Parametrierung war fuer eine Volltext-Datenbank
> entworfen,
> als eigentliche auszugebende Kategorien daher hier nur
> #20.
> Das kann aber natuerlich erweitert werden.
>
> Wie schon gesagt - ein Zeitproblem entstand bei mir durch
> die
> "zerhackte" Ausgabe nicht.
>
> Hoffentlich kommen die Zeilen einigermassen ueber.
>
> Mit freundlichen Gruessen
> Christoph Deblon
>
> --------
>
> Und hier zur Sache:
>
> Zunaechst kommt in die _start.flx:
>
> var "x var f\\asci\\ins #ufi"\ins #uX=
>
> Diese Zeile haette ich allein auch nicht hingekriegt, sie
> stammt von
> Herrn Eger (vgl. Emails in der Liste von 12.6. bis
> 13.6.2002 mit
> Betreff "Findmenue Eingaben").
>
> Der Effekt ist, das vor jeder Ausgabe der Autoflex #uX=
> augefuehrt
> wird, und die im Findmenue eingegebenen Suchworte in
> #ufi
> stehen, d.h. es ist noch etwas komplizierter - dazu siehe
> die
> Kommentare zu den Parametern.
>
>
>
>
> Parametrier-Geruest fuer Ausgabe mit markierten
> Suchworten
>
> *********************************************************
>
> ** Bei Zugriff ueber den Index ist
> #uxa mit der
> ** letzten Zugriffszeile belegt.
> ** Bei Zugriff ueber das Findmenue
> ist #ufi
> ** mit der Suchfrage belegt, die
> sich aus den
> ** Eintraegen ergibt.
> ** (Das muss in _start.flx
> veranlasst werden.)
>
> #dt df0 df1 df2 df3 dfx dtw Z
>
> ** Alle Variablen loeschen ausser
> ** #ufi, #uxa, #ucf, #ucx
>
>
> #ufi +#uxa c"STI" p>f Z
> #ufi c"PER" p>f Z
>
> ** Falls (1) #ufi belegt ist und (2)
> ** der Inhalt von #ufi wenigstens eine der
> ** in den Indexparametern vorgegebenen Kuerzel
> fuer das
> ** Findmenue (wie z.B. STI, PER usw.) enthaelt,
> handelt es
> ** sich um einen Zugriff ueber das Findmenue.
> **(#ufi ist auch dann belegt, wenn bei einem
> Zugriff ueber
> ** den Index eine mehrfach belegte Indexzeile
> gewaehlt
> ** wurde, d.h. eine Ergebnismenge entsteht; daher
> die
> ** Pruefung mit "STI", "PER" usw.).
>
> ** Falls beide Bedingungen zutreffen, werden
> ** im UP f die einzelnen Suchbegriffe aus
> dem
> ** Ergebnismengentitel herausgezogen und in
> ** #uf1, #uf2, #uf3 gespeichert.#
>
>
> #uxa y0 p"qq" P"qq" dfx afx ** Falls #uxa belegt ist,
> wird diese in #ufx
> ** gespeichert.
>
> ** (Da der Indexzeileninhalt im Text _genau_,
> ** (nicht trunkiert)
> verglichen werden soll,
> ** wird "qq" vor- _und_
> nachgestellt.)
>
> ** Nicht umkodieren, im Index ist ja schon
> ** umkodiert (anders die
> Findmenue-Suchworte
> ** im UP f).
>
> ** #ufi und #uxa koennen nicht
> geloescht werden,
> ** da Sie ja ggf. bei einem
> Zugriff fuer mehrere
> ** Titelanzeigen gelten koennten.
>
> ** Wenn ein neuer Zugriff ueber
> denselben
> ** Suchweg (Index/Findmenue)
> erfolgt, ist das
> ** unproblematisch, da sie dann
> neu belegt
> ** werden.
>
> ** Erfolgt aber ein neuer Zugriff
> ueber den
> ** jeweils anderen Suchweg, so
> bleibt die
> ** Variable des vorhergehenden
> Zugriffs
> ** bestehen. Daher:
>
> #ufi +#dt =cf Z ** Wurde #ufi NEU belegt?
> ** (#ucf dient zum Vergleich).
> ** Wenn ja, zu Zeile #dt (#dt als Hilfskat.)
>
> #uxa +#nr =cx Z ** Wurde #uxa NEU belegt?
> ** (#ucx dient zum Vergleich).
> ** Wenn ja, zu Zeile #nr (#nr =
> Hilfskat.)
>
> #dts +#20. Z ** Wenn weder #ufi noch #uxa neu,
> dann weiter
> ** zur Ausgabe
>
> #dt +#20. dfx Z ** War #ufi neu, wird die aus #uxa
> gebildete
> ** #ufx mit Suchwort geloescht,
> dann weiter zur
> ** Ausgabe
>
> #nr df0 df1 df2 df3 Z
> ** War #uxa neu, werden die aus #ufi gebildeten
> ** #uf0, #uf1, #uf2, #uf3
> geloescht (vgl. UP f)
>
>
> ***********************************************
>
> ** Die folgende Zeile vertritt die
> ** "Kategorienliste", dh. hier muessen alle
> ** auszugebenden Kategorien folgen einschliesslich
> ** eventueller Formatierungen.
> ** Die Kategorien, die dabei auf Suchwort hin
> ** geprüft werden sollen, werden dabei uber das
> ** Unterprogramm T ausgegeben.
>
>
> #20. ++ p>T m>T Z ** Ausgabe #20. ueber
> Unterprogramm T
>
>
> ***********************************************
>
>
> #+# ** HAUPTTEIL ENDE
>
>
> -----------------------------------------------
>
>
> UNTERPROGRAMME
>
>
>
> #(T ** UP fuer Ausgabe
>
>
>
> #cc dtw atw ** Die aktuelle Kategorie kommt in
> #utw
>
> ** #utw wird in einer Schleife in einzelne Worte
> zerlegt und mit der
> ** Eingabe verglichen.
>
> ** (Die Eingabe-Suchworte stehen in #ufx
> (Indexeintrag)
> ** bzw. #uf1, #uf2, #uf3 (Suchworte im Findmenue).
> Daher vier
> ** Zerlegungs- und Vergleichszeilen.
> ** Einem Indexeintrag wurde "qq" vor- und nachgestellt,
> damit er
> ** _genau_ verglichen werden kann.
> ** Den Suchworten wurde "qq" vorgestellt, damit sie
> rechts-, aber
> ** nicht linkstrunkiert verglichen werden koennen.
>
> ** Faellt einer der Vergleiche positiv aus, wird zum
> ** UP W gegangen, und dort das Wort _markiert_
> ** ausgegeben.
>
> ** Andernfalls wird das Wort _unmarkiert_ ausgegeben.
>
> ** In e"[...]" die gewuenschten Trennzeichen eintragen
>
> ** Wg. Korrektheit des Vergleichs sofortige Umkodierung
> mit y2
>
> #-t ** Schleife Einsprung
>
> !utw +#dt e"[ .,:;/-=()!?<>]" y2 f34 F34 p"qq" P"qq"
> c"~#ufx" p>w
>
> !utw +#dt e"[ .,:;/-=()!?<>]" y2 f34 p"qq" c"~#uf1" p>w
> !utw +#dt e"[ .,:;/-=()!?<>]" y2 f34 p"qq" c"~#uf2" p>w
> !utw +#dt e"[ .,:;/-=()!?<>]" y2 f34 p"qq" c"~#uf3" p>w
>
> ** Nicht gueltige #ufx bzw. #uf1. #uf2, #uf3
> ** wurden oben geloescht.
>
>
> #utw E"[ .,:;/-=()!?<>]" ** Ausgabe _unmarkiertes_ Wort
>
> ** (wg. "E" geschieht die Ausgabe
> ** mit folgendem Trennzeichen, z.B.
> ** Leer, Komma, Punkt usw.)
>
> #dt Z ** Sprungmarke
>
> #utw +t b"[ .,:;/-=()!?<>]" =tw Z ** Schleifendende;
> #utw wird um das
> ** jeweils erste WOrt verkuerzt, dann
> ** Ruecksprung nach #-t
>
> #)T ** UP T ENDE
>
>
>
> ** UP fuer Ausgabe markiertes Wort
> #(w
>
> #utw E"[ .,:;/-=()!?<>]" p99 P98
>
> ** Gewuenschtes Zwischenteil fuer
> ** Markierung (z.B. fett oder farbig
> ** als Praefix, die jeweilige
> ** Aufhebung als Postfix
>
> ** (wg. "E" geschieht die Ausgabe
> ** mit folgendem Trennzeichen, z.B.
> ** Leer, Komma, Punkt usw.)
>
> #)w ** UP w ENDE
>
>
> ** UP zur Ermittlung der Suchbegriffe
> #)f
> #ufi y0 ,"_(__" ,"_)__" ,"_STI _ _" ,"_PER _ _" df0 af0
> #uf0 y0 ,"_ and __" ,"_ or __" ,"_ not __" ,"_?__" df0
> af0
>
> ** in #ufi ist die formulierte Suchfrage
> gespeichert.
> ** Die Kuerzel fuer die Suchaspekte (STI, PER usw.)
> ** sowie die syntaktischen Ausdruecke (and, or , not,
> ()
> ** usw.) werden eliminiert, so dass die Suchworte
> ** uebrigbleiben und jetzt in #uf0 stehen.
>
> !uf0 y2 f" " e" " p"qq" df1 af1
> !uf0 y2 f" " b" " f" " e" " p"qq" df2 af2
> !uf0 y2 f" " b" " f" " b" " p"qq" df3 af3
>
> ** Jetzt stehen die Suchworte in #uf1, #uf2, #uf3.
> ** Durch Voranstellen von "qq" wird erreicht, dass sie
> fuer die
> ** Markierung rechts-, aber nicht linkstrunkiert
> verglichen
> ** werden.
>
> ** Wg. Korrektheit des Vergleichs sofortige
> Umkodierung mit y2
>
>
> #(f ** UP f ENDE
>
>
> Einschlaegige Codiertabelle nicht vergessen!
>
>
>
>
>
>
Mehr Informationen über die Mailingliste Allegro