私は、一連の文字を受け入れ可能なすべての可能な単語を返すSQLを書くことを試みています。私が最初に考えたのはそうのような基本的な3つの表のデータベースを作成することでした。文字のセットがどのような単語を見つけることができますか?
Words -- contains 200k words in real life
------
1 | act
2 | cat
Letters -- contains the whole alphabet in real life
--------
1 | a
3 | c
20 | t
WordLetters --First column is the WordId and the second column is the LetterId
------------
1 | 1
1 | 3
1 | 20
2 | 3
2 | 1
2 | 20
しかし、私は少し私が渡されたすべての文字のためのWordLettersにエントリを持って言葉を返すクエリを記述しますどのようにこだわっています。また、同じ文字の2つの単語を考慮する必要があります。私はこのクエリを始めたが、それは明らかに動作しません:
SELECT DISTINCT w.Word
FROM Words w
INNER JOIN WordLetters wl
ON wl.LetterId = 20 AND wl.LetterId = 3 AND wl.LetterId = 1
私は重複の手紙のために渡された文字や会計のすべてが含まれている唯一の言葉を返すようにクエリを記述しますどのように?
その他の情報:
マイWordの表は、私はデータベース側ではなく、コードでこれを行うにしようとしています理由です20万言葉に近い含まれています。誰も気にしている場合はenable1 word listを使用しています。
興味深い問題ですが、できるだけ多くのコードをこのコードで実行したいと考えています。 – Widor
私はそれについて考えましたが、メモリ内の200kワードで作業することはかなりリソース集中的なようでした。この種のデータをコードで効率的に処理するためのあらゆるリソースを教えてください。 –
私はあなたがコードで動作するように200,000ワードのサブセットを取得できると思いましたか?あなたは、この目的に合ったアナグラムアルゴリズムの適用を検討しましたか? – Widor