【问题标题】:How to get words from a varchar column and their frequency of occurrence in mysql如何从 varchar 列中获取单词及其在 mysql 中的出现频率
【发布时间】:2016-10-22 18:10:03
【问题描述】:

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

Word    Frequency
key1    4533
key2    4332
key3    2932

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

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

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

【问题讨论】:

  • 在应用程序代码中执行,而不是 SQL。

标签: mysql sql select innodb


【解决方案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;

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多