0

提供了一种数据类型tsvector用于存储预处理的文档,以及用于表示已处理查询的类型 tsquery

但有时 TSVECTOR 是一个单词数组,有时是一袋单词位置,有时是一个带有位置和权重的复杂向量……我可以访问其数据结构的各个部分吗?例子:

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

SELECT tsv FROM t WHERE "'foo' is the first word" -- how to do it??

想象一下 TSVECTOR 具有相同的 JSONb 结构访问运算符:我们可以通过WHERE tsv->'foo'->0=1.

在现实生活中:我没有看到(在搜索指南中)执行此操作的tsquery或直接运算符。而且我没有看到(在通用指南中完整的 TSVECTOR 文档,其中包含对其真实和完整内部结构的技术描述。

4

1 回答 1

1

不,你不能,这不是它的目的。

您必须用 C 编写一个 PostgreSQL 扩展来访问数据类型的内部结构。繁琐的替代方法是解析文本表示。

于 2020-02-06T07:16:56.997 回答