PostgreSQL通过pg_trgm扩展的三元索引实现全文检索
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PostgreSQL通过pg_trgm扩展的三元索引实现全文检索,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1755字,纯文字阅读大概需要3分钟。
内容图文
本文介绍利用pg_trgm扩展实现全文检索。
1. 概述
PostgreSQL可以使用三元索引增强全文检索。三元算法对字符串进行分词,如“dog” 被分为 “d”,”do”,”dog”,”og”多个词。
pg_trgm扩展支持三元匹配。也在Gist和Gin索引上使用三元匹配操作提升检索速度或性能。
对于全文搜索提供了不同的同义词,同时也可以使用Trigram来实现打字更正和建议。下面通过示例说明。
2. 模糊匹配
这里先介绍postgresql几种模糊操作符:
like都比较熟悉的大小写敏感匹配,ilike操作是大小写不敏感模糊匹配。
Postgresql同时还相应的符号表示:
符号 | 关键字 |
---|---|
~ | LIKE |
~* | ILIKE |
!~ | NOT LIKE |
!~* | NOT ILIKE |
3. 示例
创建示例表:
CREATE TABLE tbl_TestData
(
ID INT
,TextData TEXT
);
对text类型字段创建三元模式索引:
CREATE INDEX trgm_idx_tbl_TestData_TextData ON tbl_TestData USING GIST (TextData gist_trgm_ops);
执行上面语句,如果提示下面错误:
ERROR: operator class "gist_trgm_ops" does not exist for access method "gist"
.
则需要安装pg_trgm扩展:
CREATE EXTENSION pg_trgm;
插入示例数据:
INSERT INTO tbl_TestData
VALUES
(1,'Anvesh Patel')
,(2,'Database Research & Development')
,(3,'PostgreSQL is better than SQL Server')
,(4,'PostgreSQL is supported powerful BRIN Indexes');
执行select查询进行文本比较:
SELECT *
FROM tbl_TestData
WHERE TextData ~ 'PostgreSQL is';
SELECT *
FROM tbl_TestData
WHERE TextData LIKE '%SQL%';
SELECT *
FROM tbl_TestData
WHERE TextData ~* 'ql';
执行下面语句可以查看三元索引生成结果:
select show_trgm('study postgresql and greenplum') as notes;
返回结果:
{ a, g, p, s, an, gr, po, st,and,dy ,een,enp,esq,gre,lum,nd ,npl,ost,plu,pos,ql ,ree,res,sql,stg,stu,tgr,tud,udy,um }
执行下面语句检查相似性:
SELECT SIMILARITY('Anvesh','anv') AS SimilarPercentage;
SELECT SIMILARITY('Anvesh','anve') AS SimilarPercentage;
4. 总结
本文介绍pg_trgm扩展实现模糊检索。我们看到示例都是英文,如果是中文需要先转为bytea类型。
内容总结
以上是互联网集市为您收集整理的PostgreSQL通过pg_trgm扩展的三元索引实现全文检索全部内容,希望文章能够帮你解决PostgreSQL通过pg_trgm扩展的三元索引实现全文检索所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。