当前位置:
首页 > 手册 > PostgreSQL手册 >
-
全文检索系统之进阶
1. 前言
这一篇文章简要介绍了PostgreSQL的全文检索系统之基本介绍(一),这一节来介绍一些额外的功能,比如排名,比如高亮等。
2. 解析文档(Parsing Documents)
要查看一段文本是怎么被PostgreSQL分词的,可以用to_tsvector这个指令,是这样使用的。
postgres=# SELECT to_tsvector('english', 'a fat cat sat on a mat - it ate a fat rats');
to_tsvector
-----------------------------------------------------
'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4
(1 row)
3. 搜索结果排名(Ranking Search Results)
就是使用ts_rank或ts_rank_cd按照匹配词的出现次数做个排名。
例如:
rails365_pro=# select title, ts_rank(to_tsvector('english', body), to_tsquery('english', 'ruby')) AS rank from articles where to_tsvector('english', body) @@ to_tsquery('english', 'ruby')
order by rank desc;
title | rank
-----------------------------------------------------+-----------
使用mina来部署ruby on rails应用 | 0.0928561
登录认证系统的进阶使用 | 0.0906656
devise简单入门教程 | 0.0889769
用exception_notification结合Slack或数据库来捕获异常 | 0.0889769
Mina的进阶使用 | 0.0865452
使用backup来备份数据库 | 0.0827456
用logrotate切割Ruby on rails日志 | 0.0759909
用OneAPM作为你的监控平台 | 0.0759909
ruby | 0.0607927
(9 rows)
4. 结果的高亮(Highlighting Results)
有时候你需要把搜索的关键词高亮起来,就像谷歌,百度那样,PostgreSQL默认就支持的。
PostgreSQL有一个指令ts_headline就是来做这个事情的。
ts_headline使用起来也简单,看下面的例子:
rails365_pro=# select title,ts_headline('testzhcfg', title, to_tsquery('testzhcfg', 'mina')), ts_rank(to_tsvector('testzhcfg', title), to_tsquery('testzhcfg', 'mina')) AS rank from articles where to_tsvector('testzhcfg', body) @@ to_tsquery('testzhcfg', 'mina')
order by rank;
title | ts_headline | rank
---------------------------------+--------------------------------------+-----------
使用mina来部署ruby on rails应用 | 使用<b>mina</b>来部署rubyonrails应用 | 0.0607927
Mina的进阶使用 | <b>Mina</b>的进阶使用 | 0.0607927
(2 rows)
高亮的地方就用<b></b>
包住了。
栏目列表
最新更新
博克-定制图例
博克-注释和图例
Bokeh–添加小部件
向博克图添加标签
将交互式滑块添加到博克图
在 Bokeh 中添加按钮
谷歌、微软、Meta?谁才是 Python 最大的金
Objective-C语法之代码块(block)的使用
URL Encode
go语言写http踩得坑
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
[SQL Server]按照设定的周别的第一天算任意
Linux下定时自动备份Docker中所有SqlServer数
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式