簡介
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命令,如下:
匹配所有搜索詞
要找到所有內容包含 postgres
和 pgroonga
兩個詞的備忘錄,我們可以使用空格分隔每個詞:
sql
復制代碼
SELECT * FROM articles WHERE content &@~ 'postgres pgroonga';
在SQL編輯器中執行上述SQL命令,如下:
匹配任何搜索詞
要找到所有內容包含 postgres
或 pgroonga
的備忘錄,使用大寫的 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 以獲取最新的功能和安全性修復。
希望這個教程對你有所幫助!如有任何進一步的問題,請隨時提問。