これまでのところ、データベースには27個のテーブルがあります。1つの単語テーブル(スクラブル単語リスト)、および26の関連付けテーブル。
Table Fields
================
word [id,word]
a [word_id,count]
b [word_id,count]
...
z [word_id,count]
文字列を指定して一致する単語を見つけようとしています。
たとえば、指定された配列がa,n,t
知りたい場合:ant, tan, at, ta, an, na
。
私の現在の戦略は、文字列内の各文字を分解して、すべての文字に一致する関連する単語を見つけることです。
例えば:
SELECT word.word
FROM word, a, n, t
WHERE
word.id = a.word_id OR
word.id = n.word_id OR
word.id = t.word_id
しかし、これは、それらに含まれるすべての単語を印刷することa,n or t
になります。
そして、すべての演算子をANDに切り替えると、一致するものが1つだけになりますant
。
この謎を解くのを手伝ってくれませんか。
文字列内の重複する文字を処理する方法にも関心があります。count
文字連想表のフィールドがここで役立つと思います。単語がの場合、関連付けテーブルapp
のカウントは2になります。p
私は関連付けテーブルで正しい方向に進んでいますか、それとももっと良い方法がありますか?
私はこれをphp/mysqlでかなり効率的に処理しようとしています。以前にC、perl、javaなどでこの謎を解いたことがある人がいることを私は知っています。