PostgreSQL - 全文检索内置及自定义ranking算法介绍 与案例
背景 《用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询》 《排序算法》这个章节实际上介绍了PostgreSQL的ranking算法。 tsvector将文档分为4层结构:标题、作者、摘要、内容。对这四个层级,用户可以设定对应的weight,用于ran...
背景 《用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询》 《排序算法》这个章节实际上介绍了PostgreSQL的ranking算法。 tsvector将文档分为4层结构:标题、作者、摘要、内容。对这四个层级,用户可以设定对应的weight,用于ran...
背景 字符串搜索是非常常见的业务需求,它包括: 1、前缀+模糊查询。(可以使用b-tree索引) select * from tbl where col like 'ab%'; 或 select * from tbl where col ~ '^ab'; 2、后缀+模糊查询。(可以...
背景 业务设计初期可能不会考虑到表将来会有多大,或者由于数据日积月累,单表会变得越来越大。 后面在考虑分区的话,应该怎么将单表切换成分区表呢? 这里可以用到PostgreSQL的CTE语法,以及继承功能,还有内置的分区表功能。 例子 具体步骤 1、创建分区表 2、创建继承关系,分区表继承自需要拆分的表 ...
背景 逻辑订阅是PostgreSQL 10内置的功能,通过逻辑订阅,可以实现部分数据的同步要求。例如可以做到行级、表级、库级的订阅。 《使用PostgreSQL逻辑订阅实现multi-master》 《PostgreSQL 逻辑订阅 - 给业务架构带来了什么希望?》 《PostgreSQL 10.0 pre...
背景 在orafce提供的substrb中,当截断到某个多字节字符时,如果字符被中间截断,会导致乱码。 为了兼容oracle substrb,不截断多字节字符,可以在orafce包的substrb基础之上再写一个plpgsql函数来代替。 兼容oracle substrb 下面是阿里云提供的方法。 crea...
背景 解读Greenplum 的explain analyze输出。同时介绍两个深度明细开关explain_memory_verbosity , gp_enable_explain_allstat 。 例如,我们的一个QUERY是什么地方有瓶颈,是网络瓶颈还是CPU瓶颈,都可以从里面打印的时间观之一二。 ...
背景 poi Point of interesting. 可以翻译为兴趣点,就是在地图上任何非地理意义的有意义的点:比如商店,酒吧,加油站,医院,车站等。不属于poi的是有地理意义的坐标:城市,河流,山峰 兴趣点(POI,Point of interest),兴趣点是我们就是导航软件商收录的信息点,比如说XX...
背景 介绍在阿里云ECS环境中,实现一个非常简单,但是可用性和可靠性满足一般企业要求的PostgreSQL环境。 包括: 1、随ECS自动启动数据库 2、包括一个延迟毫秒以内的物理流复制备库 3、包括自动的秒级快照备份,可以将数据库恢复到过去的任意时间点 4、包括自动备份集有效性验证 5、包括自动清理...
背景 滑动窗口分析是数据分析中比较常见的需求,例如需要分析每一天的最近7天内的UV、PV、sum, count, avg, min, max等。 因为每一条记录的最近7天的数据都不一样,不能直接GROUP BY,而需要使用 帧 的技术,得到当前行最近7行的数据,并进行统计。 使用的是PostgreSQL的...
背景 有些时候,可能需要访问一些没有公网或者不可直接到达的服务器。 例如,你能访问A主机,但是不能访问B主机。如果A主机能访问B主机,那么你就可以在A主机加一个端口代理,从而访问到B主机。 或者如果你可以使用反向代理的方法: 《使用 ssh -R 建立反向/远程TCP端口转发代理》 下面介绍一下端口代理的...