postgresql - 在分区表与物化视图中包含 tsquery 结果
问题描述
我正在尝试构建一个为快速查询全文搜索而优化的表。
我已遵循本指南Postgres Full Text Search Is Good Enough并创建了一个物化视图,其中包含以下结果的列:
(setweight(to_tsvector(v.text_content), 'A'::"char") || setweight(to_tsvector(v.category_name), 'C'::"char") AS document
我遇到的问题是搜索结果需要在任何修改后立即更新。这意味着物化视图将需要频繁更新(可能每分钟多次),以用于最终将具有数以亿计到数十亿行的表。
这似乎是一个糟糕的设计,所以我想知道,使用 tsvector 结果作为常规列创建分区表会更好吗?这样,对单个记录的任何修改都不需要刷新物化视图。
这是一个更好的选择吗?
表定义:
CREATE TABLE public.text_records
(
id integer NOT NULL DEFAULT nextval('id_seq'::regclass),
user_id integer NOT NULL,
date timestamp with time zone NOT NULL DEFAULT now(),
text_content jsonb,
category_id integer NOT NULL
)
解决方案
使用触发器或 GENERATED 列或功能索引即时计算 tsvector。
推荐阅读
- tensorflow - 如何在tensorflow中创建_Arg、_Retval、_If操作?
- javascript - 以编程方式关注元素的第一个符合条件的孩子?
- excel - VBA:是否可以使用单元格值来激活类似命名的选项卡?
- rest-assured - 字符串数组的 RestAssured 匹配器未按预期工作
- networking - 下图跟踪的是什么菜?
- sql - 需要在多个表上形成 SQL join/subQuery
- c# - Swagger 没有显示分解的数组对象 - ASP.net Core
- android - Android Studio > Kotlin > Toast 错误 > E/GraphicExt
- python - 坚持用 Python 编写 csv
- wordpress - 通过 REST API /wp-json/wp/v2/media 上传图片让我“抱歉,您不能以该用户的身份创建帖子”