pg全文检索

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 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.以上均为查询前准备,前提是字段在使用前已经创建完成

相关文章
|
6天前
|
关系型数据库 MySQL 数据库
MySQL 全文检索
MySQL 全文检索
|
7月前
|
存储 自然语言处理 数据库
ClickHouse中的倒排索引能解决你什么问题?
ClickHouse中的倒排索引能解决你什么问题?
37925 3
ClickHouse中的倒排索引能解决你什么问题?
|
7月前
|
关系型数据库 Go 数据库
《提高查询速度:PostgreSQL索引实用指南》
《提高查询速度:PostgreSQL索引实用指南》
396 0
|
10月前
|
SQL 监控 网络协议
优化PG查询:一问一答
优化PG查询:一问一答
99 0
|
11月前
|
SQL 自然语言处理 搜索推荐
mysql全文搜索
mysql全文搜索
76 2
|
12月前
|
关系型数据库 测试技术 数据库
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
|
6天前
|
存储 关系型数据库 分布式数据库
PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 pg_trgm GIN 索引实现高效率lik...
62 0
|
算法 关系型数据库 测试技术
PostgreSQL 相似搜索插件介绍大汇总 (cube,rum,pg_trgm,smlar,imgsmlr,pg_similarity) (rum,gin,gist)
标签 PostgreSQL , cube , rum , pg_trgm , smlar , imgsmlr , pg_similarity , gin , gist , 倒排 , 相似 , 向量 , 特征 , 图像 , 文本 , 字符串 , 全文检索 背景 在搜索业务场景中,相似搜索是一个非常常见的需求。
3675 0
|
存储 大数据 关系型数据库
PostgreSQL 列存索引
大数据时代,单一的数据库系统已经不能满足用户的所有业务需求,OLAP 场景往往数据量大,查询复杂,需使用专门的数据分析类产品,如 GreenPlum;OLTP 场景往往操作较简单,要求响应及时,这也是多数关系数据库系统擅长的场景。
8341 0
PostgreSQL 列存索引
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.2. 表和索引
12.2. 表和索引 12.2.1. 搜索一个表 12.2.2. 创建索引 在前一节中的例子演示了使用简单常数字符串进行全文匹配。本节展示如何搜索表数据,以及可选择地使用索引。 12.2.1. 搜索一个表 可以在没有一个索引的情况下做一次全文搜索。
1103 0