データベースに27個のテーブルがあります。1つの単語テーブル(スクラブル単語リスト)、および26の関連付けテーブル。
Table Fields
================
word [id,word]
a [word_id]
b [word_id]
...
z [word_id]
文字列を指定して一致する単語を見つけようとしています。
たとえば、指定された文字列が、の場合、pant
知りたいのは次のとおりですpant, apt, pat, tap, ant, tan, nap, pan, at, ta, pa, an, na
。
私の現在の戦略は、文字列内の各文字を分解して、すべての文字に一致する関連する単語を見つけることです。
例えば:
SELECT word.word
FROM word, p, a, n, t
WHERE
word.id = p.word_id OR
word.id = a.word_id OR
word.id = n.word_id OR
word.id = t.word_id
しかし、これは、ap、a、n、またはtを含むすべての単語を出力することになります。
そして、すべての演算子をに切り替えるとAND
、一致するものが1つだけになりますpant
。
この謎を解くのを手伝ってくれませんか。
文字列内の重複する文字を処理する方法にも関心があります。たとえば、プレーンがすべきではないPPANT
のに、に一致するものを見つける必要があります。app
PANT
私は関連付けテーブルで正しい方向に進んでいますか、それとももっと良い方法がありますか?
私はこれをphp/mysqlでかなり効率的に処理しようとしています。以前にC、perl、javaなどでこの謎を解いたことがある人がいることを私は知っています。