Ähnliche Begriffe finden



Ähnliche Dokumente
Anleitung über den Umgang mit Schildern

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Gezielt über Folien hinweg springen

Primzahlen und RSA-Verschlüsselung

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

INNER WHEEL DEUTSCHLAND

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

AutoCAD Dienstprogramm zur Lizenzübertragung

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Datenbanken Microsoft Access 2010

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Viele Bilder auf der FA-Homepage

GEVITAS Farben-Reaktionstest

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Grundlagen der Theoretischen Informatik, SoSe 2008

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Internationales Altkatholisches Laienforum

GITS Steckbriefe Tutorial

Professionelle Seminare im Bereich MS-Office

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

So geht s Schritt-für-Schritt-Anleitung

Lokale Installation von DotNetNuke 4 ohne IIS

1 topologisches Sortieren

Zählen von Objekten einer bestimmten Klasse

Stand: Adressnummern ändern Modulbeschreibung

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Anmeldung zu Seminaren und Lehrgängen

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

GSD-Radionik iradionics Android-App

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

icloud nicht neu, aber doch irgendwie anders

Internet online Update (Mozilla Firefox)

Was ist das Budget für Arbeit?

Wir machen neue Politik für Baden-Württemberg

Erfahrungen mit Hartz IV- Empfängern

Anbindung des eibport an das Internet

Anzeige von eingescannten Rechnungen

! " # $ " % & Nicki Wruck worldwidewruck

Lehrer: Einschreibemethoden

Webalizer HOWTO. Stand:

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

CodeSaver. Vorwort. Seite 1 von 6

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Zwischenablage (Bilder, Texte,...)

Jederzeit Ordnung halten

Tipp III: Leiten Sie eine immer direkt anwendbare Formel her zur Berechnung der sogenannten "bedingten Wahrscheinlichkeit".

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Behörde für Bildung und Sport Abitur 2008 Lehrermaterialien zum Leistungskurs Mathematik

Kulturelle Evolution 12

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

STRATO Mail Einrichtung Mozilla Thunderbird

Import und Export von Übergängern

Erster Schritt: Antrag um Passwort (s. Rubrik -> techn. Richtlinien/Antrag für Zugangsberechtigung)

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Elternzeit Was ist das?

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

So funktioniert das online-bestellsystem GIMA-direkt

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

Professionelle Seminare im Bereich MS-Office

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Wachstum 2. Michael Dröttboom 1 LernWerkstatt-Selm.de

Kreativ visualisieren

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Arbeiten mit UMLed und Delphi

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

Installationshinweise für OpenOffice Portable auf einem Wechseldatenträger Stand: 27. März 2003 LS Stuttgart, Kaufmännische ZPG

PROFIS Software Lösungen

Tragen Sie bitte im Anmeldefeld die Daten ein, die Sie von uns erhalten haben.

Geld Verdienen im Internet leicht gemacht

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Warum Sie jetzt kein Onlinemarketing brauchen! Ab wann ist Onlinemarketing. So finden Sie heraus, wann Ihre Website bereit ist optimiert zu werden

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Auswertung JAM! Fragebogen: Deine Meinung ist uns wichtig!

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Änderungen im Vertrags-Manager

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

E Mail Versand mit der Schild NRW Formularverwaltung

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Google Earth und Telefonbücher im Internet

S7-Hantierungsbausteine für R355, R6000 und R2700

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Kinderarmut. 1. Kapitel: Kinderarmut in der Welt

Kostenfreier kurs

Konzepte der Informatik

COM-Add-Ins installieren

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Transkript:

Ähnliche Begriffe finden Suchfunktionen haben Sie sicher in viele Ihrer Datenbanken eingebaut. Der Benutzer soll über ein Textfeld etwa den Stammdatensatz eines Kunden finden. Solange er die Schreibweise des Nachnamens oder einen Teil davon kennt, stellt Sie die Programmierung über SQL-Statements vor keine größeren Herausforderungen. Was aber, wenn kein Herr "Maier" unter den Kunden gefunden wird, weil sich dieser tatsächlich "Meyer" schreibt? Hier helfen fehlertolerante Suchalgorithmen weiter, die in diesem Beitrag kurz dargestellt sind. Um nach Begriffen in Textfeldern von Tabellen zu suchen, bietet sich in Access der LIKE-Oper ator an. Damit ist es immerhin möglich, Teil-Strings mit Wildcards (* oder %) zu finden. Nur reicht das in all jenen Fällen nicht aus, in denen nach ähnlichen Begriffen gesucht werden soll - eine Aufgabe, die sich häufig stellt. Dann ist es notwendig, angepasste Routinen zu entwickeln, die zwei Strings nach Ähnlichkeit vergleichen können - um VBA kommen Sie hier nicht herum, da JET keine entsprechenden Funktionen kennt. Selbst dann, wenn Sie als Backend einen SQL Server einsetzen und in Views oder Stored Procedures mit der Vergleichsfunktion Soundex arbeiten, wird Sie das Ergebnis ernüchtern. Damit kommt man meist nicht weit, weil die gängigen Soundex - oder Metaphone -Implementationen dieser Server in der Regel nur einen Wert True oder False für den Vergleich zurückgeben, nicht aber den Grad der Übereinstimmung zweier Begriffe etwa über einen variablen Zahlenwert. Der Soundex-Algorithmus kodiert jeden der beiden Begriffe annähernd phonetisch in einen 4-Zeichencode und gibt dann True zurück, wenn diese beiden Codes genau identisch sind. Selbst dann, wenn Sie JET über eine VBA-Funktion das unzulängliche Soundex beibringen, ist unbefriedigend, dass ein derartiger Code in VBA sehr langsam arbeitet - VB ist nicht 1 / 5

sonderlich schnell, wenn es um String-Routinen geht, weil es im Allgemeinen für jeden produzierten Teilstring neuen Speicher alloziert und wieder frei gibt. Um schnelle externe Komponenten kommen Sie deshalb selten herum, wenn Ihnen an guter Performance gelegen ist. Externe Komponente Daher habe ich die Vergleichsroutinen in eine in Borland Delphi entwickelte DLL gepackt, deren eingebaute Funktionen weitaus flotter sind, als entsprechende VBA-Pendants. Die DLL ist in den Windows-Systempfad zu kopieren (z.b. c:windowssystem32) und stellt dann folgende Funktionen bereit: Public Declare Function AreSimilar Lib "mosssoft_w" (ByVal lpstring1 As String, _ Public Declare Function SoundExSimilar Lib "mosssoft_w" (ByVal lpstring1 As String, _ Public Declare Function MetaPhoneSimilar Lib "mosssoft_w" (ByVal lpstring1 As String, _ Public Declare Function RatcliffSimilar Lib "mosssoft_w" (ByVal lpstring1 As String, _ Diese Funktionsdeklarationen sind in den Kopf eines VBA-Moduls zu setzen, damit die DLL über sie angesprochen werden kann. Bei der ersten Funktion handelt es sich um einen völlig eigenständig entwickelten Algorithmus, die restlichen drei sind aus der Delphi-Unit HYPERSTRING der inzwischen verschollenen mind spring corp. entliehen. Alle vier Funktionen erwarten zwei zu vergleichende Strings und geben einen Zahlenwert von 0 bis 100 zurück, der den Grad der Übereinstimmung anzeigt. - Funktion SoundExSimilar: Das ist der bereits angesprochene Algorithmus Soundex. Sie gibt 100 aus, wenn die beiden Soundex-Codes übereinstimmen und 0, wenn dem nicht so ist. - Funktion MetaphoneSimilar: Dies ist ein ähnlicher Algorithmus, wie Soundex, mit dem Unterschied, dass hier nicht nur ein 4-Zeichencode generiert wird, sondern ein in der Länge variabler Stringcode. Auch hier wird nach phonetischen Gesichtspunkten verglichen. Die Funktion eignet sich besser für längere Strings. Rückgabewert ist auch hier entweder 100 oder 0 für Übereinstimmung, also im Prinzip Ja/Nein. - Funktion RatcliffSimilar: Ebenfalls phonetischer Vergleich. Die zurückgegebene Zahl dokumentiert jedoch den Grad der Übereinstimmung. Beim Wert 100 sind die Strings absolut identisch (Groß-/Kleinschreibung!). Bei 0 haben sie hingegen überhaupt nichts miteinander zu tun. Wie die Werte dazwischen zu interpretieren sind, ist in eigenen Versuchen zu ermitteln. Es 2 / 5

hat sich als sinnvoll erwiesen, bei einem Rückgabewert 75 von zwei phonetisch identischen Strings auszugehen. Der Vergleich von MAIER und MAYER etwa gibt 80 zurück. - Funktion AreSimilar: Tut das gleiche wie der Ratcliff-Algorithmus und auch die zurückgegebenen Werte sind vergleichbar. Der Unterschied ist jedoch, dass diese Funktion Teilstrings besonders berücksichtigt und höher bewertet. Während Ratcliff zum Beispiel bei den Begriffen " Verkehr" und "Straßenve rkehr " nur eine Übereinstimmung von etwa 57 anzeigt, weil die Begriffe unterschiedlich lang sind, gibt AreSimilar hier 80 zurück, da der Teilstring " Verkehr " vollständig im anderen enthalten ist. Diese Funktion ist also zu bevorzugen, wenn Teilstrings bei der Suche wichtig sind. Ausführungsgeschwindigkeit Als Test dienten mehrere Tausend Vergleichs-Strings der durchschnittlichen Länge 16. Auf einem halbwegs aktuellen Rechner ergab sich pro Sekunde folgende Anzahl von Funktionsaufrufen: Soundex: 196000 AreSimilar: 155000 Ratcliff: 117000 Metaphone: 105000 Das bedeutet, dass eine Abfrage, die etwa die Funktion Soundex implementiert, in einer Sekunde etwa 150000 Datensätze auf Ähnlichkeit vergleichen kann. Beispiel für den Einsatz der Funktionen in Abfragen In Abfragen können API-Funktionen nicht direkt verwendet werden. Es sind in einem Modul stattdessen Wrapper-Funktionen zueinzusetzen, die ihrerseits die API-Routinen aufrufen: Public Function Ratcliff (str1 As String, str2 As String) As Long Ratcliff = RatcliffSimilar (str1, str2) End Function Gegeben sei die Tabelle "Adressen" mit dem Feld "Nachname". Folgende Abfrage gibt dann alle Datensätze mit jenen Namen zurück, die ähnlich wie der anzugebende Parameter [Ähnlicher Name?] sind: SELECT * FROM Adressen WHERE Ratcliff([Ähnlicher Name?], [Nachname]) > 60;Update 03/2009 3 / 5

Seit dem Erscheinen dieser Seite im Jahr 2003 hat sich einiges getan. Inzwischen gibt es zwei neue DLLs, die möglicherweise den Umgang mit den Funktionen erleichtern. Bei beiden handelt es sich um ActiveX-DLLs, die somit keine API-Deklarationen mehr erfordern und einfach in die Verweise eines VBA-Projekts aufgenommen werden können. Die DLLs können dazu an einem beliebigen Ort gespeichert werden - vorzugsweise das Anwendungsverzeichnis - und müssen vor Verwendung im System registriert werden, was über die Windows-Befehlszeile oder den Ausführen-Dialog geschehen kann: regsvr32 <Pfad>dll... also etwa: regsvr32 c:windowssystem32dbstrings.dll - dbstrings.dll Eigenbau unter Delphi. Der Algorithmus ist identisch, wie die oben erwähnte Ratcliff-Methode. Die Bibliothek, die in die Verweise des VBA-Projekts aufgenommen werden muss, lautet hier mosssoft dbstrings Library. Für die einzige darin enthaltene Funktion RatcliffSimilar gilt allerdings das bereits oben Gesagte: Der Einsatz in einer Abfrage erfordert eine VBA- Wrapper-Funktion. - SRatcliff.dll Das ist eine unter VB6 auf Basis eines Quelltexts von Olaf Schmidt entwickelte ActiveX-DLL, die auch noch im Quelltext verfügbar ist (siehe Downloads) - Dank an Olaf! Die Verweisbibliothek lautet hier "Ratcliff Implementation (O. Schmidt)". Auch in dieser Bibliothek wird ein Ratcliff-Algorithmus verwendet, die Vergleichswörter jedoch zuvor durch eine Präprozessor-Routine gejagt, der die Worte auf Umlaute etc. untersucht und optimiert - mit besonderer Berücksichtigung deutscher Sprachgegebenheiten. Der Funktionsaufruf lautet RatcliffSchmidtX mit den beiden Vergleichswörtern als Parametern. Übrigens kann die im Sourcecode-Download enthaltene Klasse Schmidt_Ratcliff.cls auch direkt in ein Access-VBA-Projekt importiert werden, so dass auf eine externe DLL verzichtet werden kann. Die Programmierung dieser DLL ist ansich ziemlich sophisticated und sie arbeitet außerordentlich schnell. Das relativiert sich allerdings, wenn die Klasse direkt in VBA eingesetzt wird. Hier sinkt die Performance auf etwa ein Fünftel im Vergleich zur DLL-Lösung! Wie oft gilt hier die Abwägung: Nimmt man eine Zusatzkomponente in Kauf und benötigt die höhere Performance, oder möchte man sich lieber der Umstände entledigen, die eine COM-DLL mit sich bringt? Immerhin muss diese ja unter Administratorrechten registriert werden... Eine Alternative allerdings gibt es noch: Mit der Zusatz-DLL DirectCOM - ebenfalls von Olaf Schmid ( hier ) - lässt sich die Notwendigkeit der Registrierung von ActiveX-Komponenten umgehen. Über API-Funktionen der DLL können beliebige Objekte anderer DLLs instanziert werden. Wie man das realisieren kann, ist in der neuen Demo (Download unten) beispielhaft zu sehen. Die beiden neuen DLLs kommen in dieser Demo zum Einsatz. Hier kann die Qualität der beiden Ähnlichkeits-Methoden direkt verglichen werden - jede hat ihre Vor- und Nachteile. Spielen Sie einfach mit ein paar Testnamen herum. 4 / 5

Sascha Trowitzsch 03/2009 Downloads mosssoft_w.dll dbstrings.dll (neu ) SRatcliff.DLL (neu ) VB6-Source der SRatcliff.DLL (neu) Ursprüngliche Demo-MDB (Access 2000 ff.) Neue Demo-MDB (Access 2000 ff.) (neu) 5 / 5