更新 部署PostGIS.md
This commit is contained in:
54
部署PostGIS.md
54
部署PostGIS.md
@@ -120,3 +120,57 @@ WORKDIR /
|
||||
```bash
|
||||
docker build -t pgsql-gis-fts .
|
||||
```
|
||||
|
||||
## 启用中文分词扩展
|
||||
|
||||
```sql
|
||||
-- 创建扩展
|
||||
CREATE EXTENSION IF NOT EXISTS zhparser;
|
||||
```
|
||||
|
||||
```sql
|
||||
-- 创建一个新的文本搜索配置 (命名为 chinese_mix)
|
||||
-- 基于内置的 simple 配置(它能很好地处理英文和标点)
|
||||
CREATE TEXT SEARCH CONFIGURATION chinese_mix (COPY = simple);
|
||||
```
|
||||
|
||||
```sql
|
||||
-- 将中文分词器添加到该配置中
|
||||
-- 这条命令的意思是:对于识别为中文名词、动词等的 token,使用 zhparser 进行分词
|
||||
-- 其他类型(如英文单词、数字)继续使用原有的 simple 处理
|
||||
ALTER TEXT SEARCH CONFIGURATION chinese_mix ADD MAPPING FOR n,v,a,i,e,l WITH zhparser;
|
||||
```
|
||||
|
||||
## 测试
|
||||
|
||||
```sql
|
||||
-- 测试分词效果
|
||||
SELECT to_tsvector('chinese_mix', 'PostgreSQL 是一个强大的开源数据库,支持中文全文检索!');
|
||||
-- 预期输出应该包含 'postgresql', '强大', '开源', '数据库', '支持', '中文', '全文', '检索' 等词
|
||||
|
||||
-- 创建测试表
|
||||
CREATE TABLE articles (
|
||||
id SERIAL PRIMARY KEY,
|
||||
title TEXT,
|
||||
content TEXT
|
||||
);
|
||||
|
||||
-- 插入测试数据 (中英混合)
|
||||
INSERT INTO articles (title, content) VALUES
|
||||
('Introduction to AI', 'Artificial Intelligence is changing the world.'),
|
||||
('人工智能简介', '人工智能正在改变世界,PostgreSQL 是很好的存储工具。'),
|
||||
('PG 16 New Features', 'PostgreSQL 16 brings better performance and json features.');
|
||||
|
||||
-- 创建 GIN 索引 (加速检索的关键)
|
||||
CREATE INDEX idx_articles_content ON articles USING GIN (to_tsvector('chinese_mix', content));
|
||||
|
||||
-- 执行搜索查询
|
||||
-- 搜索 "人工智能"
|
||||
SELECT title FROM articles WHERE to_tsvector('chinese_mix', content) @@ to_tsquery('chinese_mix', '人工智能');
|
||||
|
||||
-- 搜索 "PostgreSQL" (英文)
|
||||
SELECT title FROM articles WHERE to_tsvector('chinese_mix', content) @@ to_tsquery('chinese_mix', 'PostgreSQL');
|
||||
|
||||
-- 搜索混合条件
|
||||
SELECT title FROM articles WHERE to_tsvector('chinese_mix', content) @@ to_tsquery('chinese_mix', '数据库 & 改变');
|
||||
```
|
||||
Reference in New Issue
Block a user