我正在使用由 2 列组成的单表数据库:整数 wordID 和 varchar 词。该表有几千行长,是通过以编程方式读取大量文本并在空格上拆分,然后使用单个单词并将它们插入数据库来创建的。目标是使用这本词典来阅读全文博客文章、推文和其他文本内容,并对它们的相关性进行评分。
我想做的是计算每个单词的计数(我自己工作)以及每个单词的“分数”——也就是说,一个单词在数据集有一个分数,分数是单词频率的倒数,范围为 1-10。我的想法是,一个词出现的频率越高,它在我以后的文本搜索中的价值就越低。然而,它也必须出现最少的次数才能有用,因为一次性可能是一个错字。
这是我的选择语句,并尝试在生成计数的同时对词频进行评分。
select word,
count(word),
10*(((max(count(word))+1) - count(word))/(max(count(word))))
from dictwords where length(word)>3 group by word having count(word)>35
order by count(word) desc;
mysql返回的错误是“Invalid use of group function”。错误 1111。
是否可以在 mySQL 中的一条语句中执行此类操作?或者我应该通过选择并将我的结果表输入占位符表然后尝试对它进行评分,从而将计数和评分分成两个查询?