Office: (Office 2010) Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

Helfe beim Thema Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t) in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, Ich probiere gerade mit Hilfe der Ratcliff Funktion eine Ähnlichkeitssuche durchzuführen. Hierzu habe ich erstmal die Beispiel DB von... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Silvie31, 7. Mai 2012.

  1. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)


    Hallo zusammen,

    Ich probiere gerade mit Hilfe der Ratcliff Funktion eine Ähnlichkeitssuche durchzuführen. Hierzu habe ich erstmal die Beispiel DB von mosstools.de nachgebaut. Wenn ich jetzt in einem Formular einen Namen eingebe, vergleicht er ihn mit den Namen aus meiner DB. so weit so gut.

    Letztendlich möchte ich aber die Ähnlichkeitssuche automatisch für mehrere Datensätze ausführen. Zur Erläuterung: Ich habe eine Liste mit bspw. 1000 Datensätzen (Titel von verschiedenen Kongressen). In dieser Liste werden aber häufig andere Schreibweisen gebraucht als die in meiner DB. Um nun "neue" und "bestehende" Kongresse zu identifizieren, sollte die Funktion alle DS meiner neuen Liste durchgehen und diese vergleichen. Bei einem Resultat von (sagen wir) 90, sollte der bestehende Kongress aktualisiert werden, alle anderen Kongresse sollten neu angelegt werden.

    Kann mir jemand erklären wie ich das hinkriege ohne jeden Kongress manuell zu prüfen? In der Beispieldatenbank wird die Datenquelle in einem Formular definiert: Comp2 = txtSearch.Value (also der manuell eingegebene Wert des Textfeldes)
    In einer Abfrage wird dann die Ratcliff Funktion angewendet, mit dem Zieldaten als Parameter RatcliffVBA([Name]). Kann ich das für alle Datensätze automatisch durchlaufen lassen?

    Hoffe es ist ein bisschen verständlich geworden, habe Mühe mein Vorhaben vernünftig zu umschreiben, freue mich aber riesig auf eure Antworten.

    LG Silvie

    :)
     
    Silvie31, 7. Mai 2012
    #1
  2. Hi,

    machbar wäre das. Aber: welche der erkannten Schreibweisen ist denn dann die richtige/erwünschte? Das wird der Algorithmus kaum erkennen können.

    Aus den 1000 Sätzen (mit varianten) müssten (z.B.) 800 Sätze mit den "Reinnamen" erstmal erzeugt werden. Mit denen kann man dann vergleichen, und die vermurksten auf die Reinnamen umstellen.
     
    Atrus2711, 9. Mai 2012
    #2
  3. Ja. Die Funktion würde dann für jeden Datensatz in der Abfrage ausgeführt.
     
    ebs17, 9. Mai 2012
    #3
  4. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Der erwünschte Name ist immer der, der schon in der DB steht. In meiner DB gibt es folgendes Meeting: Autumn Seminar of the World Psychologists Association
    In meiner Liste steht dieses Meeting jetzt wieder drin, diesmal aber mit aktuelleren Daten (Teilnehmerzahl, Datum etc.), um diese Daten geht es mir. Leider kennt derjenige der mir die Daten liefert, meine IDs nicht. Deswegen schreibt er den Kongresstitel und macht dabei Tippfehler:
    Autum Seminar of the Psychollogist Asociation

    Hier ein Beispiel wie es bisher läuft:
    Code:
    Hilft das weiter? Hoffe dass lässt sich so in etwa realisieren....

    Lieben Dank!

    X Silvie
     
    Silvie31, 9. Mai 2012
    #4
  5. Thomas Möller, 9. Mai 2012
    #5
  6. Hallo ihr lieben,

    erstmal tausend Dank für eure Antworten. Ihr habt mich schon wieder ein wenig weitergebracht. Die Funktion funktioniert jetzt auch mehr oder weniger in VBA. Ich habe die Zeile ein bisschen aufgeteilt und mache es jetzt Stück für Stück:
    Code:
    Leider legt er aber trotzdem (fast) jeden DS neu an, die Prüfung in sFilter funktioniert also doch nicht richtig. Wieso fast? Mir ist aufgefallen dass der erste Datensatz meiner Zieltabelle NICHT erneut angelegt, sondern (wie gewünscht) nur aktualisiert wird.
    Der zweite Parameter meiner Funktion ändert sich also nicht. Er vergleicht immer alle "sTitel" mit ein und demselben rsTarget("Titel"). Warum? Hat da jemand ne Idee was ich falsch mache?

    Hoffe heute ist die Frage etwas konkreter als gestern.... *Smilie

    LG Silvie
     
    Silvie31, 9. Mai 2012
    #6
  7. Hallo zusammen,

    ich komme einfach nicht mehr weiter. Wahrscheinlich steht die Lösung schon in einer eurer Antworten und ich verstehe sie einfach nicht... Hoffe ihr könnt euch nochmal erbarmen. *Smilie
    Es hakt immer noch an derselben Stelle. Habe mitlerweile unzählige Sachen ausprobiert. Hier zwei Beispiele:
    Code:
    Lösung 1 funktioniert nur halb, da sie immer nur den ersten DS meiner Zieltabelle vergleicht.
    Lösung 2 sollte dies beheben, aber ich kriege immer wieder Syntaxfehler. Da ich fast alle möglichen Schreibweisen ausprobiert habe, befürchte ich eher dass ich den Ansatz falsch verstanden, als dass es wirklich ein klassischer Syntaxfehler ist.

    Hoffe mir kann jemand den richtigen Weg weisen.....Kann auch jederzeit eine kleine Beispiel DB hochladen.

    Lieben Dank schonmal,
    Silvie

    P.S.: Ich habe auch die neuere RatcliffVBA Funktion ausprobiert, leider mit dem gleichen Resultat.
     
    Silvie31, 15. Mai 2012
    #7
  8. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Lad doch mal eine Demo hoch... ich blicks grad nicht so recht.
     
    Atrus2711, 15. Mai 2012
    #8
  9. Hallo!
    Wenn ich Deine Anforderung richtig verstehe, dann brauchst Du eine Schleife über alle Datensätze. Für jeden Deiner Datensätze rufst Du dann obige Funktion auf.

    CU
     
    Thomas Möller, 15. Mai 2012
    #9
  10. Hallo zusammen,

    Vielen lieben Dank für eure Geduld! Ich bin echt froh, dass ihr mich noch nicht aufgegeben habt. *Smilie

    @Martin: Demo is angehängt.*
    @Thomas: denke du liegst richtig. "Problem" ist aber dass ich bereits in einer Schleife bin. Hoffe die Demo erläutert das ein wenig.

    *In der Demo gibt es 2 bestehende Kongresse (tblCongresses) und 15 in der Importtabelle. Bei diesen 15 handelt es sich eigentlich um 3 verschiedene Kongresse mit jeweils fünf Ausgaben. Ziel ist also dass die Funktion die ersten fünf Kongressausgaben identifiziert und NICHT anfügt. Das gilt ebenfalls für die nächsten fünf.
    Kongress Nummer elf sollte dann wohl angefügt werden. Nachdem das geschehen ist, soll er 12-15 wiederum identifizieren und NICHT anfügen.

    Klingt kompliziert, ist aber sehr simpel. Wenn ihr euch die Kongressnamen anschaut, wird es deutlicher.

    Ich habe für meine eigene Kontrolle eine Messagebox gebaut, die mir die Zwischenergebnisse zeigt (auch zum einschätzen, welcher Ratcliff Wert akzeptabel ist.) Wenn die nervt, wisst ihr was zu tun ist... *Smilie

    Vielen vielen lieben dank für eure Mühe. Ihr könnt euch gar nicht vorstellen wie ich mich freue, ich bin gestern mal wieder halb verzweifelt....


    X Silvie
     
    Silvie31, 16. Mai 2012
    #10
  11. Hi,

    ich würde einfach die gewünschte Ratcliff (eine der vielen *Smilie) so umbauen, dass sie zwei Strings aufnimmt, und diese Funktion dann als Join-Operator einsetzen:
    Ansatz:
    Code:
    Damit schrumpft die ganze Chose auf eine Anfügeabfrage.
     
    Atrus2711, 16. Mai 2012
    #11
  12. Hallo!

    Aporpos "einer der vielen": Von Sascha gibt es einen passenden Beitrag zum Thema Ähnlichkeitssuche.

    mfg
    Josef
     
    Josef P., 16. Mai 2012
    #12
  13. Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

    Hi Martin,

    Dankeschön! Hab jetzt eine neue RatCliff die 2 Strings aufnimmt hinbekommen. Die kann ich auch endlich mal direkt in einer Abfrage anwenden. Da hatte ich wohl was mit den Modulen/Klassenmodulen nicht verstanden. *Smilie Mit der neuen Abfrage bekomme ich zum ersten Mal die falsch geschriebenen Namen mit den jeweils richtigen daneben angezeigt. Super!

    In VBA habe ich dann so weitergemacht: Code:
    Mein Problem ist jetzt aber, dass bei neuen Kongressen (also Ratcliff < 70) natürlich ein leeres Feld in meiner Abfrage erscheint. Das verursacht dann wiederum Probleme bei meiner DLookup Funktion.
    Hast du eine Idee wie ich das lösen kann?

    Ansonsten scheint es aber zu funktionieren....Vielen vielen Dank!

    Silvie
     
    Silvie31, 16. Mai 2012
    #13
  14. Ja. Was soll mit denen passieren? Die müssten neu angelegt werden... da gibts also nichts zu dlookupen.

    Wobei, wo ich drüber nachdenke: nicht jeder Datensatz mit einem Ratcliff
     
    Atrus2711, 16. Mai 2012
    #14
  15. [OT]
    Das ist egal, brauchst nur sagen wann und wo. *biggrin.gif* *biggrin.gif* *biggrin.gif*

    mfg
    Josef
     
    Josef P., 16. Mai 2012
    #15
Thema:

Ahnlichkeitssuche mit SRatcliff von Olaf Schmid(t)

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden