Phonetische Abgleichfunktionen

Die SQL-Sprache des Netezza Performance Server unterstützt zwei phonetische Matching-Funktionen, mit denen Sie Namen in phonetische Darstellungen kodieren können, indem Sie die Algorithmen SoundEx NYSIIS oder Double Metaphone verwenden.

Durch die phonetische Codierung von Namen können Sie Namen abgleichen, die auf ihrer Aussprache basieren, und fehlende Übereinstimmungen aufgrund von Rechtschreibvarianten verringern. Die phonetischen Abgleichfunktionen berücksichtigen die Groß-/Kleinschreibung nicht; die phonetischen Darstellungen sind für zwei Zeichenfolgen gleich, die dieselbe Schreibweise, aber unterschiedliche Groß-/Kleinschreibung haben. Diese Funktionen unterstützen nur die VARCHAR- und CHAR-Datentypen und insbesondere das ASCII-Subset der Latin9-Codierung. Die Funktionen ignorieren sämtliche Zeichen außerhalb des ASCII-Subsets.

Hinweis: Wenn Sie Zeichenketten verwenden, die die phonetischen Funktionen mit Zeichen außerhalb des ASCII-Bereichs aufrufen, transliterieren Sie die Zeichenketten, um akzentuierte Zeichen in ihre unakzentuierten ASCII-Versionen umzuwandeln.

SoundEx NYSIIS

SQL-Syntax:
<varchar(6) value> = nysiis(<str_expr>)

Soundex ist ein anerkannter phonetischer Algorithmus zur Indexierung von Namen nach ihrem Klang in der englischen Sprache. Diese Funktion konvertiert eine Zeichenfolge mithilfe der NYSIIS-Variante (NYSIIS - New York State Identification and Intelligence System) von Soundex in ihre Soundex-Darstellung. Der Rückgabewert ist eine Zeichenfolge von maximal sechs Zeichen, die die Aussprache der Eingabezeichenfolge angibt. Beispielsweise gibt die Funktion nysiis('Washington') die Zeichenfolge 'wasang' zurück, während die Funktion nysiis('brown') den Wert 'bran' zurückgibt.

Double Metaphone

SQL-Syntax:
<int4 value> = dbl_mp(<str_expr>)

Double Metaphone ist ein weiterer phonetischer Algorithmus für die Indexierung von Zeichenfolgen nach ihrer Aussprache. Dieser Algorithmus ähnelt Soundex, verwendet jedoch einen anderen Regelsatz für Englisch und alternative Aussprache. Die Funktion gibt zwei 4 Zeichen lange Zeichenfolgecodierungen, einen Primärschlüssel und einen Sekundärschlüssel (oder alternativen Schlüssel) für die Aussprache der Eingabezeichenfolge zurück. Ähnlich lautende Wörter nutzen Schlüssel gemeinsam, können jedoch eine variable Länge und Schreibweise haben. Beispielsweise sind die Primär- und Sekundärschlüssel von Double Metaphone für den Namen 'washington' 'AXNK' und 'FXNK'.

Um die Leistung zu verbessern, ordnet die Funktion " dbl_mp die 4-stelligen Schlüssel auf 16-Bit-Zahlen zu und gibt einen zusammengesetzten 32-Bit-WertNetezza Performance Server Typ int4) zurück, der sowohl die 16-Bit-Primär- als auch die Sekundärschlüssel enthält. Daher gibt die dbl_mp('washington')-Funktion den Wert 781598358 zurück.

Es gibt drei Helper-Funktionen (pri_mp, sec_mp und score_mp), mit denen Sie die Primär- und Sekundärschlüssel als Zeichenfolgen aus dem Rückgabewert extrahieren und Schlüsselvergleiche hinsichtlich Scoring-Relevanz ausführen können.

Primary Metaphone

SQL-Syntax:
<varchar(4) value> = pri_mp(<int4 dbl_mp return value>)

Diese Helper-Funktion verarbeitet den durch einen Aufruf der dbl_mp-Funktion zurückgegebenen Wert und gibt die entsprechende vier Zeichen lange Primary Metaphone-Zeichenfolge zurück. Beispielsweise gibt pri_mp(781598358) den Primärschlüssel AXNK zurück.

Secondary Metaphone

SQL-Syntax:
<varchar(4) value> = sec_mp(<int4 dbl_mp return value>)

Diese Helper-Funktion verarbeitet den durch einen Aufruf der dbl_mp-Funktion zurückgegebenen Wert und gibt die entsprechende vier Zeichen lange Secondary Metaphone-Zeichenfolge zurück. Beispielsweise gibt sec_mp(781598358) den Sekundärschlüssel FXNK zurück.

Score Metaphones

SQL-Syntax:
<varchar(4) value> = score_mp(<int4 dbl_mp value 1>, <int4 dbl_mp 
value 1>, <int4 strong match value>, <int4 normal match value>, 
<int4 minor match value>, <int4 no match value>)
Diese Helper-Funktion verarbeitet zwei Werte, die von der dbl_mp-Funktion zurückgegeben werden, und vergleicht sie, um zu ermitteln, wie stark sie übereinstimmen. Die letzten vier Argumente sind die für die vier möglichen Scoring- oder Abgleichergebnisse zurückzugebenden Werte. Bei Double Metaphone-Codierung sind die beiden Eingabewerte Übereinstimmungen, wenn mindestens ein Primär- oder Sekundärschlüssel übereinstimmt. Die Stärke der Übereinstimmung hängt davon ab, welche Schlüssel übereinstimmen. In der folgenden Liste wird gezeigt, wie die Stärke der Übereinstimmung ausgewertet wird:
Stärkste Übereinstimmung
Primärschlüssel (1) = Primärschlüssel (2)
Normale Übereinstimmung
Sekundärschlüssel (1) = Primärschlüssel (2)

Primärschlüssel (1) = Sekundärschlüssel (2)

Minimale Übereinstimmung
Sekundärschlüssel (1) = Sekundärschlüssel (2)

Für die vier Abgleichwertargumente können Sie Werte wie 1, 2, 3 und 4 (für stärkste, normale, minimale oder keine Übereinstimmung) angeben. Sie können auch gewichtete Werte wie 100, 50, 25 und 0 verwenden, um weitere Punkte für bessere Abgleichergebnisse zurückzugeben.

Wenn Sie z. B. die Double Metaphone-Codierungen für 'washington' (781598358) und 'wachingten' (7815963100) vergleichen, können Sie mit der folgenden score_mp-Funktion ermitteln, wie stark sie übereinstimmen:
score_mp(781598358,781596310,1,2,3,4)

Die Funktion gibt den Wert 1 zurück, der die stärkste Übereinstimmung angibt.

Vergleichen Sie die Codierungen für 'washington' und 'vachingten' (1050031766):
score_mp(781598358,1050031766,100,50,25,0) 

Die Funktion gibt den Wert 50 zurück, der eine normale Übereinstimmung angibt.