> ## Documentation Index
> Fetch the complete documentation index at: https://villagesql.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL 用 vsql_fuzzystrmatch 拡張機能

> vsql_fuzzystrmatch 拡張機能は、名前の照合と重複排除のために、Soundex、Metaphone、Double Metaphone、および Levenshtein 編集距離を MySQL に追加します。

`vsql_fuzzystrmatch` は PostgreSQL の `fuzzystrmatch` 拡張機能の移植です。文字列のペアについて、2 つの異なる問いに答えます。似た音に聞こえるか、そして、いくつの編集で隔てられているかです。名前の照合、スペル修正、および手入力されたレコードの重複排除に使用します。

| | |
| - | - |
| **メンテナー** | VillageSQL |
| **ソースと完全なドキュメント** | [villagesql/vsql-fuzzystrmatch](https://github.com/villagesql/vsql-fuzzystrmatch) |
| **ライセンス** | GPL-2.0 |

## インストール

インストールスクリプト、Docker イメージ、またはリリース tarball で VillageSQL をインストールした場合、`vsql_fuzzystrmatch.veb` はすでにサーバーの `lib/veb/` ディレクトリにあります。1 つのステートメントでサーバーにインストールします。

```sql theme={null}
INSTALL EXTENSION vsql_fuzzystrmatch;
```

インストールされたことを確認します。

```sql theme={null}
SELECT EXTENSION_NAME
FROM INFORMATION_SCHEMA.EXTENSIONS
WHERE EXTENSION_NAME = 'vsql_fuzzystrmatch';
```

```
+--------------------+
| EXTENSION_NAME     |
+--------------------+
| vsql_fuzzystrmatch |
+--------------------+
```

自分でビルドするには、[リポジトリ](https://github.com/villagesql/vsql-fuzzystrmatch)のビルド手順に従ってください。

## 追加される機能

| 関数 | 戻り値 | 説明 |
| - | - | - |
| `vsql_fuzzystrmatch.soundex(s)` | text | Soundex コード。似た音の名前は同じ値を持つ。この関数は修飾して呼び出すこと。下の注記を参照 |
| `difference(a, b)` | int | Soundex の 4 つの位置のうち一致する数。0 から 4 |
| `levenshtein(a, b)` | int | 編集距離 |
| `levenshtein_cost(a, b, ins, del, sub)` | int | 同上。操作ごとのコストを自分で指定する |
| `levenshtein_less_equal(a, b, max)` | int | 距離。`max` を超えた時点で打ち切り、`max` に 1 を足した値を返す |
| `levenshtein_less_equal_cost(a, b, ins, del, sub, max)` | int | 上の 2 つを合わせたもの |
| `metaphone(s, length)` | text | Metaphone コード。`length` で切り詰める |
| `dmetaphone(s)` | text | Double Metaphone の主コード |
| `dmetaphone_alt(s)` | text | 副コード。存在しない場合は主コードにフォールバックする |

## 例

同じ名前の 2 つの綴りは同じ Soundex コードを生成し、`difference` は一致を 4 点満点で採点します。

```sql theme={null}
SELECT vsql_fuzzystrmatch.soundex('Robert') AS robert,
       vsql_fuzzystrmatch.soundex('Rupert') AS rupert,
       difference('Robert', 'Rupert') AS same_sound;
```

```
+--------+--------+------------+
| robert | rupert | same_sound |
+--------+--------+------------+
| R163   | R163   |          4 |
+--------+--------+------------+
```

編集距離は、代わりに変更の数を数えます。

```sql theme={null}
SELECT levenshtein('kitten', 'sitting') AS edits,
       levenshtein_less_equal('kitten', 'sitting', 2) AS capped_at_2;
```

```
+-------+-------------+
| edits | capped_at_2 |
+-------+-------------+
|     3 |           3 |
+-------+-------------+
```

Metaphone は、Thompson の `Th` のように、綴りが隠す音を扱います。

```sql theme={null}
SELECT metaphone('Thompson', 10) AS metaphone, dmetaphone('Thompson') AS dmetaphone;
```

```
+-----------+------------+
| metaphone | dmetaphone |
+-----------+------------+
| 0MPSN     | TMPSN      |
+-----------+------------+
```

> [!WARNING]
>
> MySQL には独自の `SOUNDEX()` があり、名前を修飾せずに書くと組み込み関数が優先されます。2 つは異なる結果を返します。`SOUNDEX('Ashcraft')` は `A2613` を返し、`vsql_fuzzystrmatch.soundex('Ashcraft')` は `A261` を返します。MySQL 版は任意の長さの文字列を返すと文書化されており、拡張機能版は 4 文字の Soundex の定義に従います。意図したほうを呼び出すには、拡張機能名で修飾してください。ここにある他の関数が隠されることはありません。

> [!NOTE]
>
> `levenshtein_less_equal` は、真の距離が指定した上限を超えた時点で停止し、真の距離が何であれ、上限に 1 を足した値を返します。上限が 2 のとき、3 離れたペアには 3 を返し、7 離れたペアにも 3 を返します。上限に 1 を足した値は「尋ねた範囲より離れている」と読んでください。

## 関連項目

* [MySQL でのあいまい文字列照合](https://villagesql.com/docs/en/guides/fuzzy-string-matching.md) — 音声コードと編集距離の使い分け
* [トライグラム類似度](https://villagesql.com/docs/en/guides/trigram-similarity.md) — ペアの採点ではなく、部分一致のランク付け
* [拡張機能のインストール](https://villagesql.com/docs/ja/extensions/install.md) — `INSTALL EXTENSION` の仕組みと、サーバーがバンドルを探す場所
* [利用可能な拡張機能](https://villagesql.com/docs/ja/extensions/catalog) — 完全なカタログ
* [villagesql/vsql-fuzzystrmatch](https://github.com/villagesql/vsql-fuzzystrmatch) — ソース、ビルド手順、および既知の制限事項


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.