すべての単語の署名を計算する必要があります。一度だけ実行し、単語とともにデータベースに保存します。
テーブルは次のようになります。
word varchar(12),
a int,
b int,
c int,
...
w int,
z int;
a から z までのフィールドには、単語に含まれる文字の数が含まれている必要があります。たとえば、アナグラムには次のようなレコードがあります。
word, a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
anagram, 3,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0
12 文字を取得したら、セットの署名を計算し、それを使用して次のような選択を作成する必要があります。
select word, length(word) as wordlen
from dictionary
where
a <= 4 and
b <= 0 and
c <= 1 and
d <= 2 and
e <= 0 and
f <= 0 and
....
z <= 0
order by wordlen desc;
あなたが持っている文字セットを使用して作成できるすべての単語を持つために。
順列も組み合わせもなしで、作業 (辞書のコンパイル) はオフラインで 1 回だけ実行されます。
もう 1 つのヒントとして、データベースから 12 文字を超えるすべての単語を取り除きます。