0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

F検索みたいな曖昧検索を実装したい

Posted at

概要

  • F検索のような検索が可能にしたい

F検索の簡単な挙動確認

  1. ひらがなとカタカナ、半角カナをほとんどの場合で同一に扱う
    ※半角カナの濁音は例外。(サイズは「サイス」として認識する)
  2. 英語は大文字小文字を区別しない
  3. (🍣と🍺を区別する)

このような感じでシンプルである。

ただし、通常のlikeによる検索ではひらがなとカタカナのような曖昧検索ができる認識ではなかったため、文字コード分ずらしてやるか、、、?とか考えていた

どうやらMySQLの機能にあるらしい

Collation(照合)を指定することで可能っぽい

文字コードはutf8mb4を利用するのがいいっぽい。
Collationは、古い記事なので実際にMySQLを見に行ったら詳細が違った。

ここら辺を見ると良さそう

以下のコマンドで利用可能なCollationを確認できる

SHOW COLLATION WHERE Charset = 'utf8mb4';

それなりに数があるものの、命名規則に従って一致するのを探すだけで良さそうだ

日本語対応もあるが、今回の要件には合わなかったので最終的にutf8mb4_0900_as_ciが良さそうと感じた

理由は以下の通り:
全角/半角カナとひらがなを区別しない
→ksをつけない
アルファベットの大小を区別しない
→ci
清音・濁音の区別を行う
→as

実際に試したところ期待通りに動いたが、載せるのが面倒くさいので省略する

まとめ

命名規則さえ理解すれば簡単に利用可能であった。ここまで簡単に曖昧検索ができるとは思っていなかったのでできて楽しかった。😎

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?