我有一个 MySQL 食谱数据库。其中一列 NAME 是 varchar(255)。每个 NAME 可以是多个单词(例如,“Chocolate Chip Cookies”和“Oatmeal Cookies”)。
我正在寻找一种方法来有效地将食谱名称解析为单个单词,然后返回最常用单词的列表。因此,鉴于上面的两个配方,查询将返回:
cookies ,2 巧克力,1 芯片,1 燕麦片,1
有没有一种有效的方法来做到这一点?我可以查询所有结果,将每个食谱名称拆分成单词,然后构建一个数据结构在数据库外执行此操作。或者,我可以提前拆分字符串并构建一个表。
我想我真正希望的是利用数据库来更快地执行此操作(例如使用索引)。我不知道单个查询是否可行。
那么,我是否必须提前构建表格?或者这可以通过单个查询高效地完成吗?
谢谢!
最佳答案
如果您的表使用 MyISAM 存储引擎并且您在 NAME
列上构建了一个 FULLTEXT
索引,您可以使用 myisam_ftdump's --count
option以获得每个单词的总计数。然而,遗憾的是,这不在 SQL 范围内。
关于用于选择列中由空格分隔的最常见子字符串的 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938869/