0

tsvectotの典型的かつ関連するアプリケーションは、発生した単語のセットとその頻度に関する情報をクエリして要約することです...そして、JSONB は、tsvectotこれらの「クエリアプリケーション」のデータ型を表すための自然な選択 (!) です...

tsvectorJSONBにキャストする簡単な回避策はありますか?

例: キャッシュされた tsvectot の単語のグローバル頻度をカウントすると、次のクエリのようになります。

 SELECT r.key as word, SUM(r.value) as occurrences
 FROM (
     SELECT jsonb_each(kx_tsvectot::jsonb) as r FROM terms
 ) t
 GROUP BY 1;
4

1 に答える 1

3

関数を使用ts_stat()すると、必要なものが正確に得られます

word text — lexemen の値
ndoc integer — 単語が
nentryで出現したドキュメント (tsvectors) の数 integer — 単語の総出現回数

例は次のとおりです。

CREATE TABLE t (
  tsv TSVECTOR
);
INSERT INTO t VALUES
  ('word'::TSVECTOR),
  ('second word'::TSVECTOR),
  ('third word'::TSVECTOR);

SELECT * FROM
  ts_stat('SELECT tsv FROM t');

結果:

  word  | ndoc | nentry 
--------+------+--------
 word   |    3 |      3
 third  |    1 |      1
 second |    1 |      1
(3 rows)

それでもjsonbに変換したい場合は、 textwordからjsonbへのキャストを使用できます。

于 2016-03-16T16:03:25.970 に答える