2012-10-17 42 views
4

我有一个MySQL数据库的食谱。其中一列NAME是一个varchar(255)。每个NAME可以是多个单词(例如“巧克力饼干”和“燕麦饼干”)。MySQL的查询选择最常见的子字符串中的空格分隔?

我正在寻找一种方式来有效地解析食谱名成单个的单词,然后返回最常见的单词列表。因此,鉴于上述两种配方,查询将返回:

饼干,2 巧克力,1个 芯片,1克 燕麦片,1

是否有一个有效的方式来做到这一点?我可以查询所有结果,将每个配方名称拆分为单词,然后构建一个数据结构以在数据库外执行此操作。或者,我可以提前分割字符串并建立一个表格。

我想我真正希望的是利用数据库来做到这一点更快(如与索引)。我不知道一个查询是否可能。

所以,我是坚持建立一个表的时间提前?或者这可以通过单个查询高效完成?

谢谢!

+1

在数据库外执行此操作将是IMO的正确方法,速度更快。 – K3N

回答

1

如果您的表使用MyISAM存储引擎,并且您在NAME列上创建了FULLTEXT索引,则可以使用myisam_ftdump's --count option来获取每个单词的总计数。可悲的是,这将在SQL之外。

+0

谢谢。 myisam_ftdump食谱2 -c |排序 – Matt

+0

到目前为止,饼干是最流行的。 – Matt

+0

@Matt:那么,*每个人*都喜欢一个好的饼干:) – eggyal

相关问题