3

WORDPostgres 関数を作成していくつかのテーブル行をスキャンし、AMOUNT(頻度)を含むテーブルを作成できるかどうかを知りたいですか? 私の目標は、このテーブルを使用してワード クラウドを作成することです。

4

2 に答える 2

5

簡単な方法がありますが、遅くなる可能性があります (テーブルのサイズによって異なります)。テキストを配列に分割できます。

SELECT string_to_array(lower(words), ' ') FROM table;

これらの配列を使用して、unnestそれらを集約できます。

WITH words AS (
    SELECT unnest(string_to_array(lower(words), ' ')) AS word
    FROM table
)
SELECT word, count(*) FROM words
GROUP BY word;

これは簡単な方法ですが、句読点ではなくスペースでのみ単語を分割するなど、いくつかの問題があります。

その他の、おそらくより良いオプションは、 PostgreSQL 全文検索を使用することです。

于 2013-02-19T12:57:34.433 に答える