重要なのは、「85%類似」というあなたの考えにあります。ここにいくつかのアイデアがあります:
類似語表
キーワードの一般的なスペルミスを一覧表示するテーブルを定義できます。次に、データベースを検索する方法を拡張して、一般的なスペルミスを適切な値にマッピングする必要があります。
類似の単語の検索
検索を実行するときは、ライブラリを使用して類似した単語を生成し、それらすべてを検索します。検索を送信する前に、任意の種類のスペルライブラリを使用して、一致する可能性のある単語を生成できます。または、距離の編集アルゴリズムに基づいて独自に作成します。
必要な場合にのみ確認してください:
PHPを使用しているため、pspellを検討することをお勧めします。最初に電話pspell_check
して、単語のスペルが正しいかどうかを確認できます。次に、電話pspell_suggest
して提案を取得します。
例については、このリンクを参照してください。
データベース機能を使用する
たとえば、MySQLにはSOUNDS_LIKE
演算子があります。検索しWHERE keyword SOUNDS_LIKE 'kat'
て(おそらく)取得できcat
ます。詳細については、ドキュメントページを参照してください。このページでは、いくつかの制限(英語とUTF-8のみなど)について警告しています。
それはかなり一般的な問題のように聞こえるので、おそらくこの問題に対する他のより標準的な解決策があります。おそらく、これを抽象化できる、使用している言語(またはデータベースインターフェイス層)に固有の何かがあります。
最初の2つは、85%の類似性の概念を満たすことができるはずです。3番目のオプションがどれだけうまく機能するかはわかりませんが、「soundzkool」です。