pg全文检索

简介: zhparser分词器,tsvector

1.使用pg全文检索功能,首先需要创建的是分词器;

下面是创建zhparser类型的分词器,名为zhcfg

DROP text SEARCH CONFIGURATION IF EXISTS zhcfg ;

CREATE TEXT SEARCH CONFIGURATION zhcfg (PARSER = zhparser);

ALTER TEXT SEARCH CONFIGURATION zhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple;

2.根据业务需求,我们是需要创建中间表dms_file_label_new,但在创建之前,谨慎的做法是先删除它,前提是存在。如果真的存在呢,那我们之前创建的索引也是要提前删除的,那就需要这样操作。

DROP INDEX IF EXISTS idx_dms_file_label_label_classify2;
DROP INDEX IF EXISTS idx_ts_gin1;
DROP INDEX IF EXISTS idx_ts_gin2;
DROP INDEX IF EXISTS idx_ts_gin3;
(以上是删除索引)


DROP TABLE IF EXISTS dms_file_label_new;
(删除表)

CREATE TABLE dms_file_label_new (
    id serial   NOT NULL,
    file_id     int4 ,
    file_name   varchar(1024) NULL,
    file_content TEXT,
    label_ids varchar(2048) NULL,
    label_names varchar(2048) NULL,
    rela_id int4[],
        system_id varchar(21),
       created_by_name varchar(20),
        updated_by_name varchar(20),
        file_type varchar(5),
        file_url varchar(100),
        iobs_file_id varchar(100),
        labelDTOs varchar(100),
    is_valid varchar(32) NULL,
    created_by varchar(100) NOT NULL,
    created_date timestamp NOT NULL,
    updated_by varchar(100) NOT NULL,
    updated_date timestamp NOT NULL,
    report_time date,
    publish_date date,
    token_status char(1),
    tokens tsvector,
    CONSTRAINT PK_dms_file_label_new PRIMARY KEY (id)
);
(创建表)

create sequence if not exists dms_file_label_new_file_id_seq increment by 1 minvalue 1 no maxvalue start with 1;
alter table dms_file_label_new alter column "id" set default nextval('dms_file_label_new_file_id_seq');
(创建序列,并赋值给id)

CREATE INDEX idx_dms_file_label_label_classify2 ON dms_file_label_new USING btree (is_valid, file_id);
(创建聚合索引)
CREATE INDEX  idx_dms_file_label_new_gin ON public.dms_file_label_new USING GIN (tokens);
(创建全文索引)

-- 角色授权
GRANT SELECT,UPDATE,INSERT,DELETE ON TABLE dms_file_label_new TO dmsdataopr;
grant all on sequence dms_file_label_new_file_id_seq  TO dmsdataopr;

GRANT DELETE, INSERT, SELECT, UPDATE ON dms_file_label_new TO r_dmsdatadata_dml;
GRANT SELECT ON dms_file_label_new  TO r_dmsdatadata_qry, r_dmsdatadata_dev_qry;

对于tokens字段,我们是创建表的时候一同创建的,作用就是用来存放分词的。什么时候存放?就是在同步数据时,我们会把全文检索的字段分词后数据进行存放,目的就是在查询的时候不需要再次分词查询,如果每查询一次就分词一次,那么效率将会大大降低。

3.以上均为查询前准备,前提是字段在使用前已经创建完成

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
相关文章
|
数据采集 JavaScript 前端开发
实用工具推荐:适用于 TypeScript 网络爬取的常用爬虫框架与库
实用工具推荐:适用于 TypeScript 网络爬取的常用爬虫框架与库
|
4月前
|
JavaScript 前端开发 中间件
重新定义状态管理:Zustand 如何以极简之力征服复杂应用
重新定义状态管理:Zustand 如何以极简之力征服复杂应用
175 1
|
6月前
|
负载均衡 容灾 测试技术
弹性公网IP:云时代的”智能通讯管家“
弹性公网IP(Elastic IP)是云计算中实现网络资源灵活管理的重要工具。它如同可自由切换的“电话号码”,解耦了IP与物理设备的绑定,支持快速迁移、故障容灾和成本优化。通过网络地址转换(NAT)技术,弹性公网IP能在不同云服务器间无缝切换,适用于业务迁移、负载均衡扩展及A/B测试等场景。非凡云提供免费弹性公网IP服务,每个账户可申请3个IP,支持高频绑定/解绑操作,带宽独立调整,并配备API管理接口,助力用户实现高效网络资源配置。
322 10
|
5月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`<if>`、`<where>`、`<set>`、`<foreach>`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`<sql>`和`<include>`实现代码复用,优化维护效率。
370 5
|
9月前
|
Linux Docker 异构计算
基于Dify +Ollama+ Qwen2 完成本地 LLM 大模型应用实战
尼恩,一位拥有40年经验的老架构师,通过其丰富的行业经验和深入的技术研究,为读者提供了一套系统化、全面化的LLM大模型学习圣经。这套学习资料不仅帮助许多从业者成功转型,还助力多位工程师获得了高薪工作机会。
|
安全 NoSQL Java
10万条记录生成兑换码的实战方案
【5月更文挑战第27天】项目实战,介绍一次生成10万条记录兑换码的功能,由于公司需要生成大批量的兑换码,单次生成的兑换码超过10条记录。本文用于介绍相关设计方案:
747 2
|
机器学习/深度学习 人工智能 并行计算
GPU 和 CPU 处理器的架构
CPU(中央处理器)和 GPU(图形处理单元)是计算机系统中最重要的两种处理器。它们各自的架构设计和技术体系决定了其在不同应用领域中的性能和效率。
545 1
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
236644 22
|
JavaScript 前端开发 数据安全/隐私保护
ElementUI框架搭建及组件使用+登录界面精美模版分享
ElementUI框架搭建及组件使用+登录界面精美模版分享
1134 1
|
自然语言处理 算法 关系型数据库
postgresql 全文检索 SCWS和zhparser部署
UPDATE report_content SET content_tsv = to_tsvector('testzhcfg',content);
338 8