VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
このガイドには VillageSQL 0.0.4 以降が必要です。
= と LIKE が見逃す違いを生みます。VillageSQL の vsql_fuzzystrmatch 拡張機能は 4 つのアプローチを提供します。Soundex(似た音のグループ化)、Levenshtein 編集距離(文字ごとのコスト)、Metaphone(発音に基づく符号化)、および Double Metaphone(複数の言語的起源によるあいまいな発音を扱う)です。
インストール
vsql_fuzzystrmatch.soundex(...) として呼び出すこともできます。これは VEF の名前解決であり、実際のスキーマではありません。vsql_fuzzystrmatch は SHOW DATABASES には現れません。いずれかの引数が NULL のとき、すべての関数は NULL を返します。
Soundex
Soundex は、英単語をその音に基づいて 4 文字のコードに縮約します。同じコードを持つ単語は音声的に一致するとみなされます。difference は、2 つの文字列が Soundex コードの文字をいくつ共有するかを 0~4 のスコアで返します。4 = 同一のコードです。
テーブル内の音声的一致を見つける
Levenshtein 編集距離
Levenshtein は、ある文字列を別の文字列に変えるために必要な 1 文字の編集(挿入、削除、置換)の最小回数を数えます。カスタムの操作コスト
levenshtein_cost を使うと、挿入、削除、および置換に異なる重みを付けられます。
早期終了のしきい値
levenshtein_less_equal は、距離がしきい値を超えた時点で計算を打ち切ります。フィルタリングにはこちらのほうが効率的です。実際の距離が max_d を超えると、完全な距離を計算する代わりに max_d + 1 を返します。
編集距離による重複排除
Metaphone
Metaphone は Soundex より多くの英語の発音規則を適用し、可変長の出力を生成します。max_output_length パラメータが結果の長さを制限します。
Double Metaphone
Double Metaphone は、複数の言語的起源によるあいまいな発音を扱います。ドイツ語、スラブ語、スペイン語、ヘブライ語、およびその他の起源を持ち、異なる形で英語化された名前です。プライマリと代替の 2 つのコードを生成します。dmetaphone_alt はプライマリのコードにフォールバックします。
Double Metaphone を使うのは、データに複数の言語的背景を持つ名前が含まれる場合、または人間なら同等とみなす一致を Metaphone が見逃す場合です。
両方のコードによる一致
アプローチの選択
関数リファレンス
既知の制限
関数のオーバーロードはありません。 VEF は関数を名前だけで登録します。同じ名前の 2 つの関数は共存できません。PostgreSQL がオーバーロード(2 引数と 5 引数のlevenshtein)を使うところで、この拡張機能は別個の名前(levenshtein と levenshtein_cost)を使います。
文字列長の制限。 levenshtein の入力は 255 文字以下でなければなりません。