digoal
2020-03-30
PostgreSQL , pgroonga , pgbigm , 模糊查询 , 单字 , 双字 , 多字 , 多字节字符 , JSON模糊查询
pg_trgm支持模糊查询, 但是它是三个连续字符为一个token进行切分的, 所以对单字、双字的模糊查询性能不好(没有切分到这个粒度), 所以要实现 单字、双字 模糊查询, 还需要依赖自定义切分, 比较麻烦. 方法如下:
《PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)》
所以社区提供了一个增强trgm, pgbigm, 支持双字token, 如下:
=# SELECT show_bigm('full text search');
show_bigm
------------------------------------------------------------------
{" f"," s"," t",ar,ch,ea,ex,fu,"h ","l ",ll,rc,se,"t ",te,ul,xt}
(1 row)
所以使用pgbigm可以支持单字、双字、多字、多字节字符的高效率模糊查询.
另外一个插件是pgroonga, 支持更多的操作符, 整合了多种类型的模糊查询, 包括json, 数组, 数值, 文本等.
用法参考:
http://pgbigm.osdn.jp/pg_bigm_en-1-2.html
http://pgbigm.osdn.jp/index_en.html
https://pgroonga.github.io/tutorial/
https://pgroonga.github.io/overview/
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.