私は、2 つの列 (整数の wordID と varchar の単語) で構成される 1 つのテーブルのデータベースを使用しています。表は数千行の長さで、プログラムで大量のテキストを読み取り、スペースで分割し、個々の単語を大文字にしてデータベースに挿入することによって作成されました。目標は、この辞書を使用して、全文のブログ投稿、ツイート、その他のテキスト コンテンツを読み、それらの関連性を評価することです。
私がやりたいのは、各単語の数(私はそれ自体で作業しています)と各単語の「スコア」を計算することです。つまり、単語マッシュは、スコアを持つように設定されたデータで、スコアは単語の頻度の逆数であり、1 ~ 10 のスケールで表されます。考えられるのは、単語が頻繁に登場するほど、後のテキスト検索での価値が低くなるということです。ただし、1 回限りはタイプミスである可能性があるため、有用であるためには最小限の回数表示する必要があります。
これが私の選択ステートメントであり、カウントを生成すると同時に単語の頻度をスコアリングしようとしています。
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 の 1 つのステートメントで行うことは可能ですか? または、選択を実行して結果テーブルをプレースホルダーテーブルにフィードし、スコアリングを試みることにより、カウントとスコアリングを2つのクエリに分割する必要がありますか?