sql >> データベース >  >> RDS >> Mysql

PHP / MySQL:SOUNDSLIKEクエリ結果を強調表示

    SOUNDS LIKEに注意してください あなたが思うように動作しません。 LIKEと同等ではありません MySQLでは、%をサポートしていないため ワイルドカード。

    これは、「John」を検索するときに、クエリが「JohnDavid」を見つけられないことを意味します。これが単なるフォールバックである場合、これは許容できるかもしれませんが、理想的ではありません。

    したがって、ここに別の提案があります(改善が必要な場合があります)。最初にPHPを使用するsoundex() あなたが探しているキーワードのsoundexを見つけるための関数。

    $soundex = soundex($word);
    $soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
    $sql = "SELECT lastname, firstname ".
        "FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
        "OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";
    

    これで、発音が漠然と類似している名と姓のリストが作成されます(これは多くのエントリである可能性があり、検索に使用するsoundexプレフィックスの長さを長くすることをお勧めします)。次に、各単語のサウンデックスと検索語の間のレーベンシュタイン距離を計算し、それで並べ替えることができます。

    次に、SQLインジェクションのバグを回避するために、MySQLのパラメータ化されたクエリを確認する必要があります。



    1. Oracle ODBCドライバはOracleクライアントをどのようにロードしますか?

    2. .NetCore2.0データベースの最初のアプローチScaffold-MysqlDBのDbContext

    3. 列の順序が考慮されていない(設定されている)一意のインデックスを作成する方法

    4. MySQL:groupby内で並べ替え