如何获取所有可以用给定字母形成的单词?

时间:2010-06-28 16:00:36

标签: mysql

考虑我有一张包含所有词典单词的表格,

我想从db中获取单词列表,该列表可以使用给定的字母集合形成。

这可能是什么查询??? ..

我想过使用substr获取每个字符并比较它在列表中的存在和字长是否小于或等于给定的字母集合。

例如

如果我给出以下字母集,

I , L, S, N, N, E

然后我应该可以得到类似下面的词,

SIN, NIL, INN, INS, LINEN, LINENS, LINE, SINE, LENS etc.,,

查询是什么?

2 个答案:

答案 0 :(得分:1)

SELECT * 
  FROM dictionary 
 WHERE word REGEXP '^[ILSNE]{1,6}$';

不是一个完美的解决方案,但它可能会给你一些工作

答案 1 :(得分:0)

我无法(我知道)在mySQL中由字母列表形成的数据库中搜索单词。最简单的方法是事先生成一个可能的单词列表,并从数据库中选择这些单词(伪代码):

foreach(word in possible_word_list)
{
    SELECT * FROM dictionary WHERE dictionary.word=word
}

并生成可能的单词列表:

function get_possible_word_list(letters_list)
{
    word_list = array();
    foreach(letter in letters_list)
    {
        word_list.add( letter + get_possible_word_list(letters_list.remove(letter));
    }
    return word_list;
}

或类似的东西。