PHONETIC - 文字列の音声キーの取得
PHONETIC 関数は、文字列の音声キーを計算します。計算失敗時は NULL 値を返します。音声キーは、文字値に綴りのバリエーションがある場合に (例、氏名)、これらの文字値をグループ化する際に役立ちます。このグループ化は、発音に基づいて同一名のバリエーションに同一のインデックス番号を生成する方法で行われます。インデックスの生成には、2 つの音声アルゴリズム (Metaphone と Soundex) のいずれかを使用することができます。デフォルトのアルゴリズムは Metaphone です。
このアルゴリズムで、次のコマンドを使用するよう設定することができます。
SET PHONETIC_ALGORITHM = {METAPHONE|SOUNDEX}
ほとんどの音声アルゴリズムは、英語の発音に基づいて開発されました。そのため、別の言語の単語にルールを適用すると、意味のない結果が得られる場合があります。
Metaphone は、名前に使用する以外に、ほとんどの英単語に適しています。Metaphone アルゴリズムは、よく使用される多くのスペルチェッカーの基礎になっています。
注意:Metaphone は、生成された SQL では最適化されません。そのため、SQL DBMS のリクエストを最適化する必要がある場合は、SOUNDEX 設定を使用する必要があります。
Soundex は、英語発音の音声に基づいて名前をインデックス化する、従来の音声アルゴリズムです。
音声キーの取得
PHONETIC(string)
説明
文字
キーを作成する文字列です。失敗時には NULL 値が返されます。
音声キーの生成
次のリクエストは、「MARY SMITH」の姓の綴りを「SMYTHE」に変更し、それぞれの姓の音声キーを生成します。
DEFINE FILE EMPLOYEE LAST_NAME2/A16 = IF LAST_NAME EQ 'SMITH' AND FIRST_NAME EQ 'MARY' THEN 'SMYTHE' ELSE LAST_NAME; PKEY/A10 = PHONETIC(LAST_NAME2); END TABLE FILE EMPLOYEE PRINT FIRST_NAME LAST_NAME2 BY PKEY ON TABLE SET PAGE NOLEAD ON TABLE SET STYLE * GRID=OFF,$ ENDSTYLE END
下図は、出力結果を示しています。「SMITH」の 2 つの綴り (元の綴りと変更後の綴り) には、同一のインデックス番号が割り当てられます。