funzione word_key()
La funzione 'word_key() codifica foneticamente una parola, secondo la sua pronuncia in inglese, utilizzando l'algoritmo Double Metaphone o una delle tre varietà supportate dell'algoritmo Soundex.
Le parole con la stessa pronuncia ma con grafie diverse sono codificate allo stesso modo. A seconda dell'algoritmo selezionato, anche le parole dal suono simile potrebbero essere codificate allo stesso modo.
In seguito è possibile utilizzare la funzione 'word_keys_diff() per eseguire un confronto "fuzzy" delle parole codificate foneticamente. L'obiettivo è quello di permettere di abbinare i nomi in base alla loro pronuncia e di ridurre gli errori che potrebbero derivare da variazioni ortografiche. Ad esempio, è possibile utilizzare questo tipo di confronto fuzzy per trovare record duplicati dovuti a errori di ortografia. Un altro utilizzo è quello di trovare i nomi degli antenati in un database genealogico quando l'ortografia cambia leggermente nel tempo.
Le funzioni di corrispondenza fonetica non effettuano confronti sensibili alle maiuscole e alle minuscole: le rappresentazioni fonetiche sono le stesse per due stringhe che hanno la stessa ortografia, ma un diverso numero di lettere. Le funzioni ignorano i caratteri che non rientrano nel sottoinsieme ASCII.
Sintassi
int4 = word_key(varchar input [, int algorithm]);
Il valore " input specifica la parola varchar a cui deve essere assegnata una codifica fonetica.
algorithm è specificato da un codice intero, che per impostazione predefinita è 3. Gli algoritmi disponibili sono elencati nella tabella seguente.| Codice | Nome | Descrizione |
|---|---|---|
| 0 | Soundex-Miracode | L'algoritmo Soundex originale, utilizzato per codificare i nomi di famiglia nel censimento degli Stati Uniti del 1880-1930. Tutti i nomi delle famiglie sono codificati come stringhe di quattro caratteri. Il primo carattere rappresenta la prima lettera del cognome di una persona, mentre i caratteri due, tre e quattro sono codifiche intere per le restanti consonanti del nome. Le vocali vengono ignorate, le codifiche duplicate vengono ridotte a un unico valore e, se necessario, viene eseguita un'impaginazione a destra con zeri. |
| 1 | Soundex semplificato | Una forma aggiornata dell'algoritmo Soundex originale. L'algoritmo Soundex-Semplificato è identico all'algoritmo Soundex-Miracode, tranne che per il fatto che l'algoritmo Soundex-Semplificato non codifica H e W. L'utilizzo della funzione 'nysiis() integrata in Netezza Performance Server è più o meno equivalente all'utilizzo della funzione 'word_key() con l'algoritmo Soundex-Simplificato. |
| ERROR! SEGMENT DATA CORRUPTED, SEGDATA=2 | Soundex-SQLServer | La versione dell'algoritmo Soundex implementata in Microsoft SQL Server. Non codifica H o W e il raggruppamento delle somiglianze inizia dopo il primo carattere. |
| 3 | Doppio metafono | Un algoritmo che codifica la maggior parte delle parole inglesi, non solo i nomi. L'algoritmo quantifica meglio le regole della pronuncia inglese e riconosce anche un sottoinsieme di caratteri non latini. Pertanto, questo algoritmo è una scelta migliore rispetto al Soundex; il doppio metafono è l'algoritmo utilizzato dalla maggior parte dei correttori ortografici. Mentre Soundex codifica tutti i nomi con una chiave della stessa lunghezza, Double Metaphone produce codifiche di lunghezza variabile che rappresentano in modo più accurato i suoni della parola. L'algoritmo gestisce anche il caso in cui una parola abbia una pronuncia diversa, restituendo una codifica primaria e una codifica secondaria. L'utilizzo della funzione 'dbl_mp() integrata in Netezza Performance Server è equivalente all'utilizzo della funzione 'word_key() con l'algoritmo Double Metaphone. |
Risultati
La funzione restituisce il codice funzione 'word_key() di una parola come numero intero. È possibile confrontare questi codici utilizzando la funzione " word_keys_diff().
Esempio
select word_key('persistent',1);
WORD_KEY
----------
67106
(1 row)