ホームページ > データベース > mysql チュートリアル > MySQL でアクセントを区別した全文検索を実行するにはどうすればよいですか?

MySQL でアクセントを区別した全文検索を実行するにはどうすればよいですか?

DDD
リリース: 2024-12-17 02:22:24
オリジナル
795 人が閲覧しました

How Can I Perform Accent-Sensitive Full-Text Searches in MySQL?

MySQL でアクセントを区別する検索に照合順序を使用する

MySQL で全文検索を実行する場合、文字のアクセントを考慮する必要がある場合があります。感度。この状況では、質問に示されている例で示されているように、アクセントのある単語とアクセントのない単語を区別しようとすると問題が発生する可能性があります。

この問題に対処し、検索でアクセントが区別されるようにするには、次のようにします。 2 つのオプション:

  1. アクセントを区別する宣言照合順序:

    utf8_bin などのバイナリ照合順序を使用するように、問題のフィールドの照合順序を変更します。これにより、UTF-8 でエンコードされたバイトが生データとして比較され、アクセントが区別されます。

    ALTER TABLE words
    ALTER COLUMN word VARCHAR(10) COLLATE utf8_bin;
    ログイン後にコピー
  2. クエリで Collat​​e 句を使用する:

    通常、検索ではアクセントが区別されないが、特定のクエリに対して例外が必要な場合は、COLLATE 句をクエリ内の問題のあるフィールド:

    SELECT *  FROM `words`
    WHERE `word` = 'abád' COLLATE utf8_bin;
    ログイン後にコピー

MySQL 8.0 および将来のバージョンに関する追加の考慮事項:

  • 常に文字セットと一致する
  • で終わる照合順序_bin (例: utf8mb4_bin) は大文字と小文字とアクセントの両方を無視します。
  • _as_ を含む照合順序 (例: utf8mb4_as_ci) はアクセントを無視しますが、大文字と小文字の区別は維持します。
  • デフォルトの文字セットとして utf8mb4 を使用することを検討してください。より優れた Unicode を提供しますサポート。
  • 列の作成またはテーブル定義中に適切な照合順序を指定することで、CONVERT() などの変換ルーチンに依存しないようにします。

以上がMySQL でアクセントを区別した全文検索を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート