PostgreSQL擴展之PGroonga:多語言全文搜索

簡介

PGroonga 是一個 PostgreSQL 擴展,它增加了基于 Groonga 的全文搜索索引方法。雖然原生的 PostgreSQL 支持全文索引,但它僅限于基于字母和數字的語言。PGroonga 提供了更廣泛的字符支持,使其成為 PostgreSQL 支持的語言的超集,包括日語、中文等。

以下是一個簡單的教程,指導你如何配置 PGroonga 并在 PostgreSQL 中使用它。

準備工作

登錄MemFire Cloud平臺,創建一個新應用,如下圖所示:

應用創建成功后,即可獲得一個云端的Postgres數據庫。

啟用PGroonga擴展

1.通過控制臺頁面開啟PGroonga擴展。

(1)轉到儀表板中的數據庫頁面。

(2)點擊側邊欄中的 擴展

(3)搜索 “pgroonga” 并啟用該擴展。

以下是如何啟用和禁用 “pgroonga” 擴展的 SQL 代碼:

sql
復制代碼
-- 啟用 "pgroonga" 擴展
CREATE EXTENSION pgroonga WITH SCHEMA extensions;-- 禁用 "pgroonga" 擴展
DROP EXTENSION IF EXISTS pgroonga;

即使 SQL 代碼是 create extension,這等同于啟用擴展。要禁用擴展,你可以調用 drop extension

使用教程

以下是一個簡單的示例,展示如何使用 PGroonga 進行全文搜索。

創建數據表

假設有一個帶有 text 列的表:

sql
復制代碼
CREATE TABLE articles (id serial PRIMARY KEY,title TEXT,  content TEXT
);

創建全文搜索索引

我們可以使用 pgroonga 索引為全文搜索索引該列:

scss
復制代碼
CREATE INDEX ix_articles_content ON articles USING pgroonga(content);

插入數據

為了測試全文索引,我們將添加一些數據:

sql
復制代碼
insert into articles(title, content)
values('My First Article','PostgreSQL is a relational database management system.'),('My Second Article','Groonga is a fast full text search engine that supports all languages.'),('My Third Article','PGroonga is a PostgreSQL extension that uses Groonga as index.'),('My Fourth Article','There is groonga command.');

執行結果如下:

PostgreSQL 查詢計劃器足夠智能,知道對于極小的表,掃描整個表比加載索引更快。為了強制使用索引,我們可以禁用順序掃描:

ini
復制代碼
-- 僅用于測試。不要在生產中這樣做
SET enable_seqscan = OFF;

現在,如果我們在 articles.content 上運行一個查詢的解釋計劃:

sql
復制代碼
EXPLAIN SELECT * FROM articles WHERE content LIKE '%engine%';

在SQL編輯器中執行上述SQL命令,如下:

全文搜索

&@~ 運算符執行全文搜索。它返回任何匹配的結果。與 LIKE 運算符不同,pgroonga 可以進行不區分大小寫的關鍵詞搜索。

以下是一個例子:

sql
復制代碼
SELECT * FROM articles WHERE content &@~ 'groonga';

在SQL編輯器中執行上述SQL命令,如下:

匹配所有搜索詞

要找到所有內容包含 postgrespgroonga 兩個詞的備忘錄,我們可以使用空格分隔每個詞:

sql
復制代碼
SELECT * FROM articles WHERE content &@~ 'postgres pgroonga';

在SQL編輯器中執行上述SQL命令,如下:

匹配任何搜索詞

要找到所有內容包含 postgrespgroonga 的備忘錄,使用大寫的 OR

sql
復制代碼
SELECT * FROM articles WHERE content &@~ 'postgres OR pgroonga';

在SQL編輯器中執行上述SQL命令,如下:

匹配帶有否定的詞的搜索

要找到所有內容包含 postgres 但不包含 pgroonga 的備忘錄,使用 - 符號:

sql
復制代碼
SELECT * FROM articles WHERE content &@~ 'postgres -pgroonga';

在SQL編輯器中執行上述SQL命令,如下:

注意事項

  • 在生產環境中使用之前,請確保在測試環境中充分測試 PGroonga 的功能和性能。
  • 監控 PGroonga 的索引大小和性能,以確保它們不會對數據庫造成過大的負擔。
  • 定期更新 PGroonga 和 PostgreSQL 以獲取最新的功能和安全性修復。

希望這個教程對你有所幫助!如有任何進一步的問題,請隨時提問。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12942.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(實測驗證)Gitee代碼托管嘗試(一)——克隆/下載

一、登錄 Gitee(碼云)代碼托管平臺: Gitee - 基于 Git 的代碼托管和研發協作平臺 新建個人賬戶如下: 二、SSH 公鑰設置 1、在git安裝目錄打開“git-cmd.exe”; 2、通過命令 ssh-keygen 生成 SSH Key: ssh-keygen …

Linux進程概念總結

這里總結下Linux進程概念總結? 馮諾依曼: CPU 運算器與控制器RAM 內存(存儲器)Cache 緩存(一種技術)不屬于馮諾依曼體系結構。ROM 磁盤(輸入輸出設備)磁盤 既可以從硬盤讀取數據也可以向硬盤…

3-3 基于RYU的流量風暴事件原理與響應策略

在傳統網絡中,存在著一定的廣播流量,占據了一部分的網絡帶寬。同時,在有環的拓撲中,如果不運行某些協議,廣播數據還會引起網絡風暴,使網絡癱瘓。 如有以下的一個網絡拓撲結構(3_2_topoplus.py) …

零基礎學Java第十四天之枚舉

枚舉 1、理解 枚舉(Enumeration,通常簡寫為enum)在編程語言中是一種特殊的數據類型,它允許你為變量定義一組命名的常量。這些常量通常表示一組有限的值,比如一周的七天、顏色的集合或者狀態的集合等。枚舉類型的主要目…

es 分詞器(五)之elasticsearch-analysis-jieba 8.7.0

es 分詞器(五)之elasticsearch-analysis-jieba 8.7.0 今天咱們就來講一下es jieba 8.7.0 分詞器的實現,以及8.x其它版本的實現方式,如果想直接使用es 結巴8.x版本,請直接修改pom文件的elasticsearch.version版本號即可…

再談畢業論文設計投機取巧之IVR自動語音服務系統設計(信息與通信工程專業A+其實不難)

目錄 舉個IVR例子格局打開,萬物皆能IVR - 把《民法典》搬上IVR IVR系統其實可鹽可甜。還能可圈可點。 戎馬一生,歸來依然IVR。 舉個IVR例子 以下是IVR系統的一個例子。 當您撥打電話進入IVR系統。 首先檢驗是否為工作時間。 如是,您將被送入…

基于51單片機的自動澆花器電路

一、系統概述 自動澆水灌溉系統設計方案,以AT89C51單片機為控制核心,采用模塊化的設計方法。 組成部分為:5V供電模塊、土壤濕度傳感器模塊、ADC0832模數轉換模塊、水泵控制模塊、按鍵輸入模塊、LCD顯示模塊和聲光報警模塊,結構如…

垃圾分類管理系統java項目

文章目錄 垃圾分類管理系統一、項目演示二、項目介紹三、系統部分功能截圖四、部分代碼展示五、底部獲取項目(9.9¥帶走) 垃圾分類管理系統 一、項目演示 垃圾分類管理系統 二、項目介紹 系統角色:管理員、用戶 1、登錄、注冊功能…

機器人非線性系統反饋線性化與解耦

機器人非線性系統的反饋線性化和解耦是控制理論中的兩個重要概念,它們分別用于簡化系統分析和設計過程,提高控制系統的性能。 首先,反饋線性化是一種將非線性系統轉化為線性系統的技術。在機器人控制中,由于機器人本身是一個強耦…

?python使用selenium進行Web自動化測試?

什么是selenium Selenium 是 ThoughtWorks 提供的一個強大的基于瀏覽器的 Selenium 是一個用于 Web 應用程序測試的工具,測試直接自動運行在瀏覽器中,就像真正的用戶在手工操作一樣。支持的瀏覽器包括 IE、Chrome 和 Firefox 等。這個工具的主要功能包…

2024042001-計算機網絡 - 物理層

計算機網絡 - 物理層 計算機網絡 - 物理層 通信方式帶通調制 通信方式 根據信息在傳輸線上的傳送方向,分為以下三種通信方式: 單工通信:單向傳輸半雙工通信:雙向交替傳輸全雙工通信:雙向同時傳輸 帶通調制 模擬信號…

C++基礎——繼承(下)

一、繼承與靜態成員 基類定義了static 靜態成員,則整個繼承體系里面只有一個這樣的成員。無論派生出多少個子 類,都只有一個 static 成員實例 。 class person { public:person(const char* name "lisi"):_name(name){} public:string _name;…

那些年我與c++的叫板(一)--string類自實現

引子:我們學習了c中的string類,那我們能不能像以前數據結構一樣自己實現string類呢?以下是cplusplus下的string類,我們參考參考! 廢話不多說,直接代碼實現:(注意函數之間的復用&…

Nacos+GateWay 搭建微服務架構

文章目錄 1.當前項目架構分析1.請求多個模塊的方式1.請求renren-fast模塊開發環境生產環境 2.請求sunliving-commodity模塊1.使用環境變量資源路徑的方式2.開發環境 dev.env.js3.生產環境 prod.env.js 3.文件上傳請求 sunliving-service模塊1.請求后端接口(開發環境…

當服務實例出現故障時,Nacos如何處理?

當服務實例出現故障時,Nacos的應對策略 在微服務架構日益盛行的今天,服務之間的穩定性與可靠性成為了我們架構師們不得不面對的重要課題。尤其是在面對服務實例出現故障時,如何確保整個系統的穩定運行,成為了我們首要考慮的問題。…

匯聚榮科技:拼多多上架商品后需要做頁面推廣嗎?

在電商平臺上,商品的曝光率和銷量往往成正比。那么,當您在拼多多上架了新品,是不是就意味著坐等訂單呢?答案顯然是否定的。商品一旦上架,接下來需要做的就是通過有效的頁面推廣來增加商品的可見度,吸引潛在買家的注意…

在亞馬遜上賣燈具需要什么認證,亞馬遜燈飾產品需要審核與認證嗎

LED燈具在亞馬遜美國站銷售,需要有UL認證或者UL報告、FCC,如果是帶消毒滅菌的燈,需要做EPA,歐洲站,日本站,認證只需要CE和ROHSR認證。 UL認證:本認證主要針對充電器、移動電源、手機電池、燈具…

Rust的NLL特性:讓生命周期管理更靈活

Rust的NLL特性:讓生命周期管理更靈活 Rust語言以其獨特的內存安全和并發性能受到開發者的青睞。而在Rust中,一個關鍵的概念就是“生命周期”。為了進一步優化生命周期的管理和借用檢查,Rust引入了NLL(Non-Lexical Lifetime&#…

html基礎(全)

html簡介 目錄 什么是網頁 什么是 HTML 常用瀏覽器 WebE標準的構成 基本語法概述 第一個HTML頁面 文檔類型聲明標簽 lang 語言種類 字符集 標題標簽 段落和換行標簽 文本格式化標簽 div和span標簽 圖像標簽和路徑 超鏈接標簽 表格的主要作用 表頭單元格標簽 列…