Funzioni di corrispondenza fonetica

Il linguaggio SQL di Netezza Performance Server supporta due funzioni di corrispondenza fonetica che possono essere utilizzate per codificare i nomi in rappresentazioni fonetiche utilizzando gli algoritmi SoundEx NYSIIS o Double Metaphone.

Codificando i nomi in modo fonetico, è possibile abbinare i nomi in base alla loro pronuncia e ridurre gli errori che potrebbero derivare da variazioni ortografiche. Le funzioni di corrispondenza fonetica non sono confronti sensibili alle maiuscole e alle minuscole; le rappresentazioni fonetiche sono le stesse per due stringhe che hanno la stessa ortografia, ma un diverso caso di lettere. Queste funzioni supportano i tipi di dati VARCHAR e CHAR e in particolare il sottoinsieme ASCII della codifica Latin9. Le funzioni ignorano qualsiasi carattere al di fuori del sottoinsieme ASCII.

Nota: se si utilizzano stringhe che richiamano le funzioni fonetiche con caratteri al di fuori dell'intervallo ASCII, è necessario traslitterare le stringhe per convertire i caratteri accentati nella loro versione non accentata ASCII.

SoundEx NYSIIS

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

Il Soundex è un noto algoritmo fonetico per indicizzare i nomi in base al suono pronunciato in inglese. Questa funzione converte una stringa nella sua rappresentazione Soundex utilizzando la variante del Soundex del New York State Identification and Intelligence System (NYSIIS). Il valore di ritorno è una stringa di massimo sei caratteri che identifica la pronuncia della stringa in ingresso. Ad esempio, la funzione 'nysiis('Washington') restituisce la stringa 'wasang', mentre la funzione 'nysiis('brown') restituisce il valore 'bran'.

Doppio metafono

Sintassi SQL:
<int4 value> = dbl_mp(<str_expr>)

Double Metaphone è un altro algoritmo fonetico per indicizzare le stringhe in base alla loro pronuncia. Simile al Soundex, utilizza una serie di regole diverse per la pronuncia inglese e alternativa. La funzione restituisce due codifiche di stringhe di 4 caratteri, una chiave primaria e una secondaria (o alternativa), per la pronuncia della stringa in ingresso. Le parole dal suono simile condividono le chiavi, anche se possono essere di lunghezza e ortografia variabile. Ad esempio, le chiavi primarie e secondarie a doppia metafa per il nome "washington" sono "AXNK" e "FXNK".

Per migliorare le prestazioni, la funzione 'dbl_mp mappa le chiavi a 4 caratteri in numeri a 16 bit e restituisce un valore composito a 32 bit (tipoNetezza Performance Server e 'int4) che contiene sia la chiave primaria che quella secondaria a 16 bit. Quindi, la funzione 'dbl_mp('washington') restituisce il valore 781598358.

Esistono tre funzioni di aiuto (pri_mp, 'sec_mp e 'score_mp) che possono essere utilizzate per estrarre le chiavi primarie e secondarie come stringhe dal valore di ritorno e per eseguire confronti tra le chiavi per ottenere un punteggio.

Metafonia primaria

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

Questa funzione ausiliaria prende il valore restituito da una chiamata alla funzione " dbl_mp e restituisce la corrispondente stringa di quattro caratteri del metafono primario. Ad esempio, 'pri_mp(781598358) restituisce la chiave primaria AXNK.

Metafonia secondaria

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

Questa funzione ausiliaria prende il valore restituito da una chiamata alla funzione " dbl_mp e restituisce la corrispondente stringa di quattro caratteri del metafono secondario. Ad esempio, " sec_mp(781598358) restituisce la chiave secondaria FXNK.

Metafore del punteggio

Sintassi SQL:
<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>)
Questa funzione ausiliaria prende due valori restituiti dalla funzione 'dbl_mp e li confronta per determinarne la corrispondenza. Gli ultimi quattro argomenti sono i valori da restituire per i quattro possibili risultati del punteggio o della corrispondenza. Con la codifica a doppia metafonia, si dice che i due valori di ingresso corrispondono quando una o più delle loro chiavi primarie o secondarie corrispondono; la forza della corrispondenza dipende da quali chiavi corrispondono. Ad esempio, l'elenco seguente mostra come valutare la forza della corrispondenza:
La partita più forte
Chiave primaria (1) = Chiave primaria (2)
Partita normale
Chiave secondaria (1) = chiave primaria (2)

Chiave primaria (1) = Chiave secondaria (2)

Abbinamento minimo
Chiave secondaria (1) = chiave secondaria (2)

Per i quattro argomenti del valore di corrispondenza, è possibile specificare valori come 1, 2, 3 e 4 (per la corrispondenza più forte, normale, minima o nulla). È inoltre possibile utilizzare valori ponderati come 100, 50, 25 e 0 per restituire più punti per ottenere risultati migliori.

Ad esempio, se si confrontano le codifiche a doppia metafonia di "washington" (781598358) e "wachingten" (7815963100), si può usare la seguente funzione " score_mp per determinare la loro corrispondenza:
score_mp(781598358,781596310,1,2,3,4)

La funzione restituisce il valore 1, che indica la corrispondenza più forte.

Se si confrontano le codifiche di 'washington' e 'vachingten' (1050031766):
score_mp(781598358,1050031766,100,50,25,0) 

La funzione restituisce il valore 50, che indica una corrispondenza normale.