重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
PostgreSQL自带有一个简易的全文检索引擎,可以实现小规模数据量的全文检索功能。本文我们将引导介绍一下这个功能,对于小数据量的搜索这个功能是足够使用的,而无需搭建额外的ES等重量级的全文检索服务器。
专注于为中小企业提供网站制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业祥符免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
PG的全文检索操作符是 @@ ,当一个 tsvector (文档)和 tsquery (条件)匹配时返回 true ,并且前后顺序无影响:
和普通的SQL查询一样,只要在 WHERE 条件中使用这个符号就代表使用全文检索条件筛选文档了。如:
@@ 操作符支持隐式转换,对于 text 类型可以无需强类型转换( ::tsvector 或 to_tsvector(config_name, text) ),所以这个操作符实际支持的参数类型是这样的:
tsquery 查询条件并不是简单的正则,而是一组搜索术语,使用并且使用布尔操作符 (AND)、 | (OR)和 ! (NOT)来组合它们,还有短语搜索操作符 - (FOLLOWED BY)。更详细的语法参见 此文档 。
此外,PostgreSQL还提供了两个相对简化的版本 plainto_tsquery 和 phraseto_tsquery 。
plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用户将未格式化的 text 经过分词之后,插入 符号转为 tsquery :
phraseto_tsquery ( phraseto_tsquery([ config regconfig, ] querytext text) returns tsquery )行为和 plainto_tsquery 行为类似,但是分词之后不是插入 而是 - (FOLLOWED BY):
使用索引可以加快全文检索的速度。对于全文检索来说,可选的索引类型是 GIN (通用倒排索引)和 GIST (通用搜索树),官方文档更推荐使用 GIN索引 。创建一个 GIN 索引的范例:
也可以是一个连接列:
还可以单独创建一个 tsvector 列,为这个列创建索引:
除了普通的 ORDER BY 条件之外,PostgreSQL为全文检索提供了两个可选的排序函数 ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 和 ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 ,以便实现基于 权重 的排序。
此外,对于PostgreSQL 9.6以上的版本还可以使用 RUM index 排序。(注意,这个是扩展,默认不包含)。
PostgreSQL默认的分词字典中并不包含中文分词字典,因此我们必须手工引入。目前一个比较好的项目是 zhparser ,同时这个插件也是阿里云的RDS默认包含的。安装和启用没什么好说的。值得一提的是分词配置参数。
在 CREATE EXTENSION 之后,必须配置分词参数才能正确进行分词和查找,否则什么都查不到。官方文档提供的一个配置策略是:
n,v,a,i,e,l 这几个字母分别表示一种token策略,只启用了这几种token mapping,其余则被屏蔽。具体支持的参数和含义可以用 \dFp+ zhparser 显示:
WITH simple 表示词典使用的是内置的simple词典,即仅做小写转换。根据需要可以灵活定义词典和token映射,以实现屏蔽词和同义词归并等功能。
比如我们看下面这个例子:
可以看到 江淮 这个词组在查询的时候被忽略了,我们启用 j (abbreviation,简称)再看看结果:
所以实际使用中要设置合理的token types,过少将导致搜索结果不准确,过多将导致性能下降。此外,还有一些诸如 短词复合: zhparser.multi_short = f 这一类的控制分词结果的选项,根据实际使用酌情开启。
给楼主提供几个网址 有教程的 (基础的)
1 PostgreSQL 7.3 教程
这个不用下载 可以直接看
2 PostgreSQL 实用实例参考(PDF)
3 PostgreSQL v8.0 中文文档(HTML)
一、安装准备1.安装介绍可浏览PostgreSQL在Windows
平台下的下载页面,了解各种下载和安装PostgreSQL的方法。
在Windows上安装PostgreSQL最简单的方法是从前面的下载页面下载由EnterpriseDB公司维护的一键安装程序,这个安装程序将在Windows上安装一个已编译好的PostgreSQL数据库软件、一个图形界面的管理程序pgAdmin、可选择的有附加功能的增值模块和过程语言。另外一个名叫StackBuilder的软件也会安装上,它可以帮助你下载或安装附加模块,如ODBC或JDBC驱动
2.安装环境Win7旗舰版64位
postgresql-9.2.4-1-windows-x64.exe
二、安装过程1.
开始安装2.
选择安装目录3.
选择数据存放目录
4.选择数据存放目录
该目录在以后的使用过程中可以修改调整。5.
输入超级用户口令6.
监听端口号设置
默认即可,以后使用中可以通过修改postgresql.conf进行调整。7.
高级选项-语言环境设置选择Default locale
即可,中文简体
新加坡(Chinese[Simplified],
Singapore)未做尝试,据说会导致查询结果和排序效果不正确。8.
安装进度9.
安装结束之后可以利用
Stack Builder工具安装PostgreSql相关插件、驱动或工具。
选择远程服务器
进行软件下载及安装。
至此,完整软件包的安装结束。
打开软件,进入界面中。
双击“PostgresSQL 9.3”连接服务器
方法一:右键单击“postgres”,选择“新建对象”--新建数据库,设置新的数据库的参数,所有者一般默认为“postgres”
新建完后,不能立即看到界面上更新的数据,需要点击界面上的更新按钮才能够看到数据库的变化情况。
方法二:在插件中输入SQL语言,运行命令
方法三:点击面板上的“执行任意的SQL查询”
PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS), 也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目, 并且有非常广泛的用户。 PostgreSQL 可以说是最富特色的自由数据库管理系统,甚至我们也可以说是最强大的自由软件数据库管理系统。事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有 Inprise 的 InterBase 以及 SAP 等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。 给楼主提供几个网址 有教程的 (基础的) 1 PostgreSQL 7.3 教程 这个不用下载 可以直接看 2 PostgreSQL 实用实例参考(PDF) 3 PostgreSQL v8.0 中文文档(HTML)