音声マッチング関数
Netezza Performance ServerSQL 言語は 2 つの音声照合関数をサポートしており、SoundExNYSIIS アルゴリズムまたは Double Metaphone アルゴリズムを使用して名前を音声表現にエンコードできます。
名前を音声にエンコードすることで、発音を基にマッチングを行うことができ、スペリングの違いによる間違いが減ります。 音声マッチング関数では比較時に大/小文字は区別されません。そのため、2 つのストリングの大/小文字が異なっていてもスペルが同じである場合は、同一の音声形式と見なされます。 これらの関数では、VARCHAR 型と CHAR 型、および ASCII サブセットの Latin9 エンコーディングのみがサポートされます。 ASCII サブセット以外の文字はすべて無視されます。
SoundEx NYSIIS
<varchar(6) value> = nysiis(<str_expr>)Soundex は、英語発音の音声により名前のインデックス付けを行うことで知られる音声アルゴリズムです。 この関数は、Soundex の「New York State Identification and Intelligence System (NYSIIS)」を使ってストリングを Soundex 形式に変換し、 ストリングの発音を示す最高 6 文字のストリングを返します。 例えば、関数 nysiis('Washington') はストリング‘wasang’を返し、関数 nysiis('brown') は値‘bran’を返します。
Double Metaphone
<int4 value> = dbl_mp(<str_expr>)Double Metaphone は、発音に基づきストリングのインデックス付けを行うもう 1 つの音声アルゴリズムです。 Soundex の場合と同様、英語および代替発音に関する複数の規則が使用されます。 この関数は、4 文字のストリング・エンコーディング 2 つ (プライマリー・キーとセカンダリー (代替) キー) を入力ストリングの発音として返します。 音が類似する語は、長さやスペルが異なっていても、キーを共有します。 例えば、名前‘washington’の Double Metaphone プライマリー・キーは 'AXNK'、セカンダリー・キーは 'FXNK' です。
パフォーマンスを向上させるために、'dbl_mp関数は4文字のキーを16ビットの数値にマッピングし、16ビットのプライマリキーとセカンダリキーの両方を保持する複合32ビット値Netezza Performance Serverの int4型)を返します。 つまり、dbl_mp('washington') の場合、781598358 の値が返されることになります。
3 つのヘルパー関数 (pri_mp、sec_mp、score_mp) を使って、戻り値からプライマリー・キーとセカンダリー・キーをストリングとして抽出し、スコアリング用にキー比較を行うことが可能です。
Primary Metaphone
<varchar(4) value> = pri_mp(<int4 dbl_mp return value>)
このヘルパー関数は dbl_mp 関数の呼び出しによって返された値を取り、4 文字のプライマリー Metaphone ストリングを返します。 例えば、pri_mp(781598358) ではプライマリー・キー AXNK が返されます。
Secondary Metaphone
<varchar(4) value> = sec_mp(<int4 dbl_mp return value>)
このヘルパー関数は dbl_mp 関数の呼び出しによって返された値を取り、4 文字のセカンダリー Metaphone ストリングを返します。 例えば、sec_mp(781598358) ではセカンダリー・キー FXNK が返されます。
Score Metaphones
<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>)- 最高度の一致
- Primary Key (1) = Primary Key (2)
- 通常の一致
- Secondary Key (1) = Primary Key (2)
Primary Key (1) = Secondary Key (2)
- わずかに一致
- Secondary Key (1) = Secondary Key (2)
これら 4 つの match value 引数に対して、1、2、3、4 などの値 (最高度の一致、通常の一致、わずかに一致、不一致) を指定することができます。 また 100、50、25、0 といった加重値を使い、一致度が高くなるに従い高いポイントが返されるようにすることも可能です。
score_mp(781598358,781596310,1,2,3,4)
最高度の一致を示す値 1 が返されます。
score_mp(781598358,1050031766,100,50,25,0)
通常の一致を示す値 50 が返されます。