私のMySQLデータベースに私はユーザテーブルを持っています。ユーザー名フィールドにタイプミスしたまま検索を実行する必要があります。このトピックについては、非常に古い質問はほとんどありません。私は組み込みのmysqlの全文検索をテストしましたが、期待通りに動作しませんでした(それは誤植を処理しません)[私は知っていましたが、とにかく試しました]。 私の最善の選択肢は何ですか?私は今日、簡単な解決策があるべきだと考えました。私はelasticsearch上のユーザーテーブルを複製することを考えていて、そこから即座に検索しますが、これが引き起こす同期化の悪夢を避けたいと思っています。Typoを使ったMySQL検索
ありがとうございます!
ユーザー名が単一の単語の場合は、[SOUNDEX](http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_soundex)を試すことができます。私たちは同じ問題を抱えて弾力的な検索に移りました。それはDBからの負荷が大きいので同期の努力をする価値があります(私の場合は30%) – pratikvasa
ありがとうございますが、私はsoundexが十分だとは思いません。同期にどのように近づいたか簡単に説明できますか?長期間に渡って2つのDBが整列していることをどのように確認できますか? –
少し面倒です。 DB上で、ESインデックスに存在するテーブルにトリガを作成しました。このトリガーは、IDを変更してIDをテーブルに格納する行のすべてのIDを追加します。私たちはそのテーブルから読み込み、idをrabbitmqの待ち行列に送るcronジョブを作成しました。キューを使用して、障害に強いようにしました。 ESでインデックスを更新する消費者を書いた。私たちのテーブルは通常非常に低い更新レート(5アップデート/秒)を持っています。更新/挿入が大きい場合、これは難しくなります – pratikvasa