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图形化工具创建数据库表。
相关文章
|
11月前
|
存储 搜索推荐 关系型数据库
Postgres 全文搜索:数据库中的搜索引擎
例如,如果您想跨多个字段进行搜索该怎么办?即使搜索词碰巧拼写错误,如何返回可能的匹配项?另外,如果您有大量数据需要搜索怎么办?当然,您可以为要查询模式匹配的列创建索引,但这会有限制(例如,B 树索引不适用于 `col LIKE '%substring%'`)。
87 0
|
关系型数据库 Go 数据库
《提高查询速度:PostgreSQL索引实用指南》
《提高查询速度:PostgreSQL索引实用指南》
546 0
|
关系型数据库 测试技术 数据库
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版通过 pg_trgm GIN 索引实现高效率lik...
165 0
|
存储 并行计算 Cloud Native
PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的 价值产出, 将数据变成生产力. 本文将介绍PolarDB 开源版通过 pg_trgm GIN 索引实现高效率 `like '%xxx%'` 模糊查询
354 0
|
存储 NoSQL MongoDB
MongoDB的索引和查询分析(explain)
MongoDB的索引和查询分析(explain)
3748 0
|
算法 关系型数据库 测试技术
PostgreSQL 相似搜索插件介绍大汇总 (cube,rum,pg_trgm,smlar,imgsmlr,pg_similarity) (rum,gin,gist)
标签 PostgreSQL , cube , rum , pg_trgm , smlar , imgsmlr , pg_similarity , gin , gist , 倒排 , 相似 , 向量 , 特征 , 图像 , 文本 , 字符串 , 全文检索 背景 在搜索业务场景中,相似搜索是一个非常常见的需求。
3787 0
|
自然语言处理 关系型数据库 PostgreSQL
PostgreSQL中文全文检索
一 安装必备软件 1.1 安装SCWS 下载scws:http://www.xunsearch.com/scws/down/scws-1.2.2.tar.
2577 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.2. 表和索引
12.2. 表和索引 12.2.1. 搜索一个表 12.2.2. 创建索引 在前一节中的例子演示了使用简单常数字符串进行全文匹配。本节展示如何搜索表数据,以及可选择地使用索引。 12.2.1. 搜索一个表 可以在没有一个索引的情况下做一次全文搜索。
1129 0