我的varchar(255)
列有FULLTEXT
索引。我需要一个查询来获取整个列中最常用的单词
Word Frequency
key1 4533
key2 4332
key3 2932
注1:我更喜欢跳过介词等常用词,但这并不重要,因为我可以稍后过滤它们。刚才提到它是否可以加快查询速度。
注2:这是一个超过一百万行的表。它不是常规查询,但实际上应该很快。
如果您甚至提示查询应该是什么样子,那将是一个很好的帮助。
答案 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;