我在我的数据库中有27个表格。一个词表(一个拼字游戏词表)和26个关联表。如何在字符串单词应用程序中的简单的mysql/php单词中查找单词匹配?
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
但这结束打印该具有p,A,N或它们吨所有单词。
如果我切换所有的运营商到AND
,我坚持只有一个匹配:pant
。
你能帮我解决这个谜题吗?
我还关心如何处理字符串中的重复字母。例如,PPANT
应该为app
找到一个匹配项,当纯PANT
不应该。
我在正确的轨道与关联表或有更好的方法吗?
我试图在php/mysql中相当有效地处理这个问题。我知道还有其他人在C,Perl,Java等之前解决了这个谜题。
我不知道这将如何工作,以匹配没有所需的确切字母的单词。例如,给定字符串:'anppt',这将如何返回单词'app'?或者甚至考虑到你提到的字符串,“anpt”,你将如何从这里得到“ant”或“at”? – Ryan
你说得对Ryan。我的解决方案只能找到anagrams。我已经更新了我的答案。 – erisco