如何从varchar列中获取单词及其在mysql

时间:2016-10-22 18:10:04

标签: mysql sql select innodb

我的varchar(255)列有FULLTEXT索引。我需要一个查询来获取整个列中最常用的单词

Word    Frequency
key1    4533
key2    4332
key3    2932

注1:我更喜欢跳过介词等常用词,但这并不重要,因为我可以稍后过滤它们。刚才提到它是否可以加快查询速度。

注2:这是一个超过一百万行的表。它不是常规查询,但实际上应该很快。

如果您甚至提示查询应该是什么样子,那将是一个很好的帮助。

1 个答案:

答案 0 :(得分:1)

这在MySQL中并不容易实现。全文索引不可用于查询。你可以做的一件事是提取单词。这有点痛苦。以下假设单词由单个空格分隔,并获得前三个单词的频率:

  select substring_index(substring_index(t.words, ' ', n.n), ' ', -1) as word, count(*)
  from t cross join
       (select 1 as n union all select 2 union all select 3
       ) n
       on n.n <= length(t.words) - length(replace(t.words, ' ', '') + 1
  group by substring_index(substring_index(t.words, ' ', n.n), ' ', -1) 
  order by count(*) desc;