MySQL Query用于选择由列中的空格分隔的最常见子串?

时间:2012-10-17 16:23:52

标签: mysql string varchar

我有一个配方的MySQL数据库。其中一列NAME是varchar(255)。每个NAME可以是多个单词(例如,“Chocolate Chip Cookies”和“Oatmeal Cookies”)。

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

cookies,2 巧克力,1 芯片,1 燕麦片,1

有一种有效的方法吗?我可以查询所有结果,将每个食谱名称拆分为单词,然后构建数据结构以在数据库外执行此操作。或者,我可以提前拆分字符串并构建表格。

我想我真正希望的是利用数据库来更快地完成这项工作(比如使用索引)。我不知道单个查询是否可行。

那么,我是不是提前建了一张桌子?或者这可以通过单个查询有效地完成吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的表使用MyISAM存储引擎并在FULLTEXT列上构建NAME索引,则可以使用myisam_ftdump's --count option获取每个字的总计数。然而,遗憾的是,这将超出SQL。