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.以上均为查询前准备,前提是字段在使用前已经创建完成

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
相关文章
|
7月前
|
SQL 关系型数据库 数据库
PG/Greenplum
PG/Greenplum 是指 PostgreSQL(简称 PG)和 Greenplum(简称 GP)两种关系型数据库管理系统。它们都是基于 SQL(结构化查询语言)的开放源代码数据库系统,具有高性能、可扩展性和高可靠性等特点
132 7
|
7月前
|
关系型数据库 MySQL 数据库
MySQL 全文检索
MySQL 全文检索
|
存储 搜索推荐 关系型数据库
Postgres 全文搜索:数据库中的搜索引擎
例如,如果您想跨多个字段进行搜索该怎么办?即使搜索词碰巧拼写错误,如何返回可能的匹配项?另外,如果您有大量数据需要搜索怎么办?当然,您可以为要查询模式匹配的列创建索引,但这会有限制(例如,B 树索引不适用于 `col LIKE '%substring%'`)。
97 0
|
存储 SQL 缓存
PG 向量化引擎--1
PG 向量化引擎--1
279 1
|
关系型数据库 测试技术 数据库
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
|
7月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 pg_trgm GIN 索引实现高效率lik...
188 0
|
存储 并行计算 Cloud Native
PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
366 0
|
存储 SQL 自然语言处理
sphinx全文检索引擎
sphinx全文检索引擎
167 0
LXJ
|
关系型数据库 数据库 数据安全/隐私保护
Pg相关查询语句
Pg相关查询语句
LXJ
204 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 9.5+ 高效分区表实现 - pg_pathman
PostgreSQL 9.5+ 高效分区表实现 - pg_pathman 作者 digoal 日期 2016-10-24 标签 PostgreSQL , 分区表 , pg_pathman , custom scan api 背景 目前PostgreSQL社区版本的分区
28878 0