一、核心数据类型
openGauss 为全文检索提供了两种关键数据类型:
- **
tsvector**:表示为文本搜索优化的文档格式。它将文档解析为词素(lexeme)的有序组合,并存储词素位置信息,以支持邻近排序。词素是经过标准化处理的文本片段,如将大写字母转换为小写、删除后缀等。 - **
tsquery**:表示文本查询。它包含已标注为词条的搜索词,并可使用 AND、OR、NOT 等操作符连接多个术语,实现复杂的查询逻辑。
二、基本文本匹配
使用 @@ 操作符可以判断一个 tsvector 是否匹配一个 tsquery。若匹配,则返回 true;否则返回 false。例如:
三、文本预处理与索引创建
为提高搜索性能,openGauss 支持对文本字段创建全文索引。创建索引前,需使用 to_tsvector 函数将文本转换为 tsvector 格式。例如:
四、全文检索查询示例
创建索引后,可执行高效的全文检索查询。例如,搜索 body 字段中包含 america 的文档:
五、高级功能与优化
- 分词器控制:openGauss 支持多语言预定义分词器,如
pg_catalog.default(英文)、pg_catalog.ngram 和 pg_catalog.pound(中文及中英混合)。用户可通过 ALTER DATABASE 或会话级设置调整分词器配置。 - 自定义文本搜索配置:允许用户创建自定义文本搜索配置,指定解析器、词典列表等组件,以满足特定搜索需求。
- 停用词处理:通过词典丢弃无意义的停用词(如“的”“是”),减少索引体积并提高搜索准确性。
- 查询扩展与同义词支持:支持创建同义词词典,使查询能匹配同义词或相关术语。
六、性能优势
- 快速匹配:基于
tsvector 和 tsquery 的预处理结构,实现毫秒级响应。 - 高效索引:GIN 索引通过倒排列表加速查询,支持高并发场景。
- 精准排序:根据词素位置信息计算相关性分数,确保结果按匹配度排序。
总结
openGauss 作为一款开源关系型数据库,提供了强大的全文检索功能,支持高效、精准的文本数据搜索。其全文检索功能基于匹配算子 @@ 实现,通过预处理文档和查询条件,将文本转换为可优化的数据结构,从而加速搜索过程。
一、核心数据类型
openGauss 为全文检索提供了两种关键数据类型:
tsvector**:表示为文本搜索优化的文档格式。它将文档解析为词素(lexeme)的有序组合,并存储词素位置信息,以支持邻近排序。词素是经过标准化处理的文本片段,如将大写字母转换为小写、删除后缀等。tsquery**:表示文本查询。它包含已标注为词条的搜索词,并可使用AND、OR、NOT等操作符连接多个术语,实现复杂的查询逻辑。二、基本文本匹配
使用
@@操作符可以判断一个tsvector是否匹配一个tsquery。若匹配,则返回true;否则返回false。例如:三、文本预处理与索引创建
为提高搜索性能,openGauss 支持对文本字段创建全文索引。创建索引前,需使用
to_tsvector函数将文本转换为tsvector格式。例如:-- 创建包含 text 字段的表 CREATE TABLE tsearch.pgweb ( id INT, body TEXT, title TEXT, last_mod_date DATE ); -- 插入数据 INSERT INTO tsearch.pgweb VALUES (1, 'China, officially the People''s Republic of China (PRC), located in Asia, is the world''s most populous state.', 'China', '2010-1-1'); INSERT INTO tsearch.pgweb VALUES (2, 'America is a rock band, formed in England in 1970 by multi-instrumentalists Dewey Bunnell, Dan Peek, and Gerry Beckley.', 'America', '2010-1-1'); -- 创建 GIN 索引(需先转换文本格式) CREATE INDEX pgweb_idx_1 ON tsearch.pgweb USING gin(to_tsvector('english', body));四、全文检索查询示例
创建索引后,可执行高效的全文检索查询。例如,搜索
body字段中包含america的文档:SELECT id, body, title FROM tsearch.pgweb WHERE to_tsvector('english', body) @@ to_tsquery('america');五、高级功能与优化
pg_catalog.default(英文)、pg_catalog.ngram和pg_catalog.pound(中文及中英混合)。用户可通过ALTER DATABASE或会话级设置调整分词器配置。六、性能优势
tsvector和tsquery的预处理结构,实现毫秒级响应。总结
openGauss 作为一款开源关系型数据库,提供了强大的全文检索功能,支持高效、精准的文本数据搜索。其全文检索功能基于匹配算子
@@实现,通过预处理文档和查询条件,将文本转换为可优化的数据结构,从而加速搜索过程。