docker pgsql实现pg_jieba全文检索

news2025/1/11 5:19:09

安装pg_jieba分词器

安装依赖工具

查看docker运行的所有容器

docker ps

进入pg数据库容器

docker exec -it postgres4postgis bash

安装必要的工具和依赖

apt-get install -y git build-essential cmake libpq-dev postgresql-server-dev-all

安装pg_jieba分词

git clone https://github.com/jaiminpan/pg_jieba.git /pg_jieba
cd /pg_jieba
git submodule update --init --recursive
mkdir build && cd build

因为我这容器是Ubuntu系统,需要指定DPostgreSQL_TYPE_INCLUDE_DIR
#版本可以通过navicat执行SELECT version();确定

cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/14/server ..
make
make install

加载扩展: 进入 PostgreSQL 命令行,加载 pg_jieba 扩展

psql -U postgres

在 PostgreSQL 提示符下运行以下命令:

CREATE EXTENSION pg_jieba;

#如果报错ERROR: could not open extension control file “/usr/share/postgresql/14/extension/pg_jieba.control”: No such file or directory
查看容器中是不是有多个pgsql版本,将多余的版本卸载
#列出已安装的 PostgreSQL 版本

ls /usr/lib/postgresql

#卸载其他版本

apt-get remove --purge postgresql-16 postgresql-client-16 postgresql-server-dev-16

清理残留文件

rm -rf /usr/lib/postgresql/16
rm -rf /usr/share/postgresql/16
rm -rf /usr/include/postgresql/16

#验证 PostgreSQL 版本

psql --version

用navicat将插件加载到指定数据库
在这里插入图片描述

建立索引

添加 tsvector 列
首先,为了存储全文检索数据,需要在表中添加一个 tsvector

ALTER TABLE "news_publish" ADD COLUMN tsv tsvector;

更新 tsvector 字段: 在数据库中创建触发器,当插入或更新记录时自动更新 tsvector 字段。

CREATE OR REPLACE FUNCTION "public"."update_tsvector"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
BEGIN
    NEW.tsv := to_tsvector('jiebacfg', NEW.title || ' ' || NEW.content_txt);
    RETURN NEW;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE
ON news_publish FOR EACH ROW EXECUTE FUNCTION update_tsvector();

创建 GIN 索引: 为了加快全文检索的速度,可以为 tsvector 列创建一个 GIN 索引。

CREATE INDEX idx_gin_tsv ON news_publish USING GIN(tsv);

sql语句

        SELECT *
        from news_publish a
        WHERE a.delete = 0
        <if test="keyword != null and keyword != ''">
            AND a.tsv @@ to_tsquery('jiebacfg', #{keyword})
        </if>
        order by a.last_modify_time desc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache DolphinScheduler用户线上Meetup火热来袭!

Apache DolphinScheduler 社区 8 月用户交流会精彩继续&#xff01;本次活动邀请到老牌农牧产品实业集团铁骑力士架构工程师&#xff0c;来分享Apache DolphinScheduler在现代农牧食品加工场景中的应用实践。此外&#xff0c;还将有社区活跃贡献者以Apache DolphinScheduler为例…

为什么AI会一本正经地胡说八道

泛泛地说&#xff0c;AI一本正经地胡说八道的原因可以归结为&#xff1a;AI的理解能力受到其训练数据和算法的限制&#xff0c;如果问题表达不清晰或者背景信息不足&#xff0c;AI可能会产生错误的推理或输出&#xff1b;AI语言模型本质上是基于统计学习和模式匹配的&#xff0…

基于新型电力系统的有序充电解决方案

安科瑞 耿敏花 摘要&#xff1a;近年来,新能源汽车的销量快速增长,相应的充电桩数量也急剧增加,这一现象可能会给电网和变压器造成负担,与此同时&#xff0c;新型电力系统下以光伏为主的分布式发电系统占比也在逐渐提高&#xff0c;新能源的不稳定性叠加充电需求的不确定性会给…

MySQL基础练习题13-指定日期的产品价格

题目&#xff1a;找出在 2019-08-16 时全部产品的价格&#xff0c;假设所有产品在修改前的价格都是 10 。 准备数据 分析数据 题目&#xff1a;找出在 2019-08-16 时全部产品的价格&#xff0c;假设所有产品在修改前的价格都是 10 。 准备数据 ## 创建库 create tadabase d…

矩阵管理系统真的好用吗

在这个短视频盛行的时代&#xff0c;每个人都可能是下一个网红。但是&#xff0c;当你的账号遍布各大平台&#xff0c;每个平台都要求你不断更新内容时&#xff0c;你可能会问&#xff1a;有没有一种工具&#xff0c;可以让这一切变得更简单&#xff1f;这就是矩阵管理系统出现…

项目中AOP相关问题

答&#xff1a;AOP是面向切面编程&#xff0c;可以通过定义方法拦截器和切入点&#xff0c;实现将一些逻辑相同的代码块抽取到同一个模块中&#xff0c;这个模块就是切面。代码可以只关注业务实现&#xff0c;不用关注那些通用逻辑。 答&#xff1a;切面&#xff0c;通用模块&…

模型部署优化综述

一、引言 模型部署优化是一个涵盖众多环节的宽泛领域,从模型训练完成到实际硬件部署,涉及多个层面的工作,且每个环节对技术的要求各异。其本质是通过减小模型大小、提高推理速度等手段,使模型能在各种硬件中成功部署并实时有效运行。 二、模型剪枝技术 (一)模型剪枝的…

Oracle基础-集合

集合&#xff1a;两个结果集的字段个数和字段类型必须相同&#xff0c;才能使用集合操作。 --UNION 并集 重复行会去重 (SELECT A,B FROM DUAL UNION SELECT C,D FROM DUAL) UNION (SELECT A,B FROM DUAL UNION SELECT E,F FROM DUAL ); --UNION ALL 全集 包含所有记录 不去重…

学校会拒绝孤独症孩子吗?揭秘专业教育机构的关怀之心

在当今社会&#xff0c;孤独症孩子的教育问题备受关注。许多家长心中都存在着一个担忧&#xff1a;学校会拒绝孤独症孩子吗&#xff1f; 事实上&#xff0c;大多数专业的教育机构都怀揣着一颗关怀之心&#xff0c;不会轻易拒绝这些特殊的孩子。 专业的教育机构深知&#xff0c;…

畅捷通如何远程访问?

随时随地能够远程访问和操作畅捷通已经成为许多职场人士的迫切需求。作为一名有着亲身经历的使用者&#xff0c;今天我就来和大家分享一下实现畅捷通远程访问的绝佳方法。 曾几何时&#xff0c;为了能在外出时也能使用畅捷通办公&#xff0c;我可谓是绞尽脑汁。尝试过多种传统方…

trino开启https

作者&#xff1a;振鹭 一、生成https证书 &#xff08;所用到的openssl和keytool命令都是linux自带的&#xff09; 配置https证书&#xff1a; &#xff08;1&#xff09;创建目录 [hdfshadoop01 hadoop]# mkdir -p /data/ssl/ [hdfshadoop01 hadoop]# cd /data/ssl/&…

【全志H616开发】Linux守护进程

文章目录 守护进程简介基本特点创建一个守护进程通常涉及以下步骤&#xff1a;进程查看指令&#xff1a; 守护进程开发代码示例&#xff1a; 开机自动启动 守护进程 简介 Linux Daemon&#xff08;守护进程&#xff09;是运行在后台的一种特殊进程。它独立于控制终端并且周期性…

C语言斜向钥匙迷宫

目录 开头程序的流程图程序的效果结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语言编译的斜向钥匙迷宫和与之相关的一些东西。 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <Windows.h> void printmaze(co…

数据结构算法-排序(二)

插入排序 插入排序核心 假设数组中的一部数据已经排好序&#xff0c;要插入的数据和这些数据进行比较&#xff0c;直到找到合适的位置插入新数据。 插入排序步骤 插入排序主要有以下步骤构成&#xff1a; 假设有序&#xff0c;我们假设**a[0]**已经排好序待插入的数据为a[j]…

Windows蓝屏问题解决(电脑只要安装了VPN_SV独立客户端)必蓝屏

一、SERNEL_SECURITY_CHECK_FAILURE (139) 蓝屏分析 官方介绍蓝屏现象&#xff0c;官方Windows为了保护电脑&#xff0c;出现故障&#xff0c;自动蓝屏&#xff0c;避免损坏电脑的一种现象&#xff0c;别名buckcheck、蓝屏。 100%复现软件&#xff1a;天融信VPN&#xff0c;同事…

AI赋能交通治理:非机动车监测识别技术在城市街道安全管理中的应用

引言 城市交通的顺畅与安全是城市管理的重要组成部分。非机动车如自行车、电动车、摩托车等在城市交通中扮演着重要角色&#xff0c;但同时也带来了管理上的挑战。尤其是在机动车道上误入非机动车的现象&#xff0c;不仅影响交通秩序&#xff0c;还可能引发交通事故。思通数科…

C#插件 调用存储过程(输出参数类型)

存储过程 CREATE PROCEDURE [dbo].[GetSum]num1 INT,num2 INT,result INT OUTPUT AS BEGINselect result num1 num2 END C#代码 using Kingdee.BOS; using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Util; using System; using System.…

3分钟认识KTX2纹理

作者&#xff1a;游梦 图片与纹理区别 日常沟通中通常把图片与纹理混为一谈&#xff0c;实际在图形学中&#xff0c;它俩是严格意义上的两个对象&#xff0c;主要有以下两个方面的区别&#xff1a; 文件格式&#xff1a; 图片&#xff1a;JPG、JPEG、PNG、bmp、webp、SVG等常…

gstreamer 配置+解析编解码

一. 安装gstreamer 1.1 Windows下安装 官网链接&#xff1a;https://gstreamer.freedesktop.org/download/#windows 两个都要下载。安装的时候&#xff0c;在custom选择安装路径。然后返回上一步选择complete完全安装&#xff0c;两个安装方式一样。 1.2 配置环境 将 D:\…

python3 pyside6图形库学习笔记及实践(二)

目录 前言常用控件下拉框(QComboBox)复选框(QCheckBox)单选框(QRadioButton)文本框(QTextEdit和QPlainTextEdit)滑块(QSlider) 布局常见布局控件示例布局的好处 对话框消息框(QMessageBox)输入对话框(QInputDialog)文件对话框(QFileDialog)字体对话框(QFontDialog)颜色对话框(Q…