今のところ、問題のSQL部分を無視すると、私が使用するアルゴリズムはかなり単純です。まず、辞書の各単語を取得し、文字を並べ替えた順序で、そのバージョンを作成します。その単語の元のバージョンに。
これにより、次のようなエントリを含むテーブルが作成されます。
sorted_text word_id
act 123 /* we'll assume `act` was word number 123 in the original list */
act 321 /* we'll assume 'cat' was word number 321 in the original list */
次に、入力(たとえば、「tac」)を受け取ったら、その文字を並べ替え、元の単語のテーブルに結合された並べ替えられた文字のテーブルで検索します。これにより、から作成できる単語のリストが得られます。その入力。
私の場合 これを行っていた場合、SQLデータベースにそのためのテーブルがありますが、おそらく他の何かを使用して、単語リストをソートされた形式に前処理します。同様に、ユーザーの入力文字をフロントエンドの作成に使用していたものに並べ替えたままにしておくと、SQLは、リレーショナルデータベース管理という得意なことを実行することになります。