【发布时间】:2012-10-17 20:33:22
【问题描述】:
我的数据库中有 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
但这最终会打印出所有包含 p、a、n 或 t 的单词。
如果我将所有运算符切换到 AND,我只能选择一个匹配项:pant。
你能帮我解开这个谜吗?
我还关心如何处理字符串中的重复字母。例如,PPANT 应该找到 app 的匹配项,而普通的 PANT 则不应该。
我是否在关联表的正确轨道上或有更好的方法?
我试图在 php/mysql 中相当有效地处理这个问题。我知道以前有其他人用 C、perl、java 等解决过这个谜题。
【问题讨论】:
标签: php mysql string performance