Я работаю с базой данных с одной таблицей, состоящей из двух столбцов: целочисленного идентификатора слова и слова 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: «Недопустимое использование групповой функции». Ошибка 1111.
Можно ли сделать что-то подобное в одном выражении в mySQL? Или я должен разбить подсчет и оценку на два запроса, выполнив выборку и подав мою таблицу результатов в таблицу-заполнитель, а затем попытавшись ее оценить?