全文检索-解析器
文本搜索解析器负责将原文档文本分解为多个token,并标识每个token的类型。这里的类型集由解析器本身定义。注意,解析器并不修改文本,它只是确定合理的单词边界。由于这一限制,人们更需要定制词典,而不是为每个应用程序定制解析器。目前GaussDB200提供了四个内置的解析器,分别为pg_catalo
附加功能-收集文献统计
函数ts_stat可用于检查配置和查找候选停用词。ts_stat(sqlquerytext,[weightstext,]OUTwordtext,OUTndocinteger,OUTnentryinteger)returnssetofrecordsqlquery是一个包含SQL查询语句的文本,该SQL
附加功能-查询重写
ts_rewrite函数族可以从tsquery中搜索一个特定的目标子查询,并在该子查询每次出现的地方都替换为另一个子查询。实际上这只是通过字串替换而得到的一个特定tsquery版本。目标子查询和替换查询组合起来可以被认为是一个重写规则。一组类似的重写规则可以为搜索提供强大的帮助。例如,可以使用同义词
附加功能-处理查询
GaussDB200提供了函数和操作符用来操作tsquery类型的查询。tsquery&&tsquery返回两个给定查询tsquery的与结果。tsquery||tsquery返回两个给定查询tsquery的或结果。!!tsquery返回给定查询tsquery的非结果。numnode
附加功能-处理tsvector
GaussDB200提供了用来操作tsvector类型的函数和操作符。tsvector||tsvectortsvector连接操作符返回一个新的tsvector类型,它综合了两个tsvector中词素和位置信息,并保留词素的位置信息和权重标签。右侧的tsvector的起始位置位于左侧tsvector
控制文本搜索-高亮搜索结果
搜索结果的理想显示是:列出每篇文档中与搜索相关的部分,并标识为什么与查询相关。搜索引擎能够显示标识了搜索词的文档片段。GaussDB200提供了函数ts_headline支持这部分功能。ts_headline([configregconfig,]documenttext,querytsquery[,
控制文本搜索-排序查询结果
排序试图针对特定查询衡量文档的相关度,从而将众多的匹配文档中相关度最高的文档排在最前。GaussDB200提供了两个预置的排序函数。函数考虑了词法,距离,和结构信息;也就是,他们考虑查询词在文档中出现的频率、紧密程度、以及他们出现的地方在文档中的重要性。然而,相关性的概念是模糊的,并且是跟应用强相关
控制文本搜索-解析查询
GaussDB200提供了函数to_tsquery和plainto_tsquery将查询转换为tsquery数据类型,to_tsquery提供比plainto_tsquery更多的功能,但对其输入要求更严格。to_tsquery([configregconfig,]querytexttext)ret
控制文本搜索-解析文档
GaussDB200中提供了to_tsvector函数把文档处理成tsvector数据类型。to_tsvector([configregconfig,]documenttext)returnstsvectorto_tsvector将文本文档解析为token,再将token简化到词素,并返回一个tsv
表和索引-索引使用约束
下面是一个使用索引的例子:createtabletable1(c_intint,c_bigintbigint,c_varcharvarchar,c_texttext)with(orientation=row);createtextsearchconfigurationts_conf_1(parser
表和索引-创建索引
为了加速文本搜索,可以创建GIN索引。CREATEINDEXpgweb_idx_1ONtsearch.pgwebUSINGgin(to_tsvector('english',body));to_tsvector()函数有两个版本。只输一个参数的版本和输两个参数的版本。只输一个参数时,系统默认采用de
表和索引-搜索表
在不使用索引的情况下也可以进行全文检索。一个简单查询:将body字段中包含america的每一行打印出来。DROPSCHEMAIFEXISTStsearchCASCADE;CREATESCHEMAtsearch;CREATETABLEtsearch.pgweb(idint,bodytext,titl
介绍-分词器
全文检索功能还可以做更多事情:忽略索引某个词(停用词),处理同义词和使用复杂解析,例如:不仅基于空格的解析。这些功能通过文本搜索分词器控制。GaussDB200支持多语言的预定义的分词器,并且可以创建分词器(gsql的\dF命令显示了所有可用分词器)。在安装期间选择一个合适的分词器,并且在postg
介绍-基本文本匹配
GaussDB200的全文检索基于匹配算子@@,当一个tsvector(document)匹配到一个tsquery(query)时,则返回true。其中,tsvector(document)和tsquery(query)两种数据类型可以任意排序。SELECT'afatcatsatonamatanda
介绍-文档概念
文档是全文搜索系统的搜索单元,例如:杂志上的一篇文章或电子邮件消息。文本搜索引擎必须能够解析文档,而且可以存储父文档的关联词素(关键词)。后续,这些关联词素用来搜索包含查询词的文档。在GaussDB200中,文档通常是一个数据库表中一行的文本字段,或者这些字段的可能组合(级联)。文档可能存储在多个表
介绍-全文检索概述
文本搜索操作符在数据库中已存在多年。GaussDB200为文本数据类型提供~、~*、LIKE和ILIKE操作符;但它们缺乏现代信息系统所要求的许多必要属性。这些缺憾可以通过使用索引及词典进行解决。文本检索缺乏信息系统所要求的必要属性:没有语义支持,即使是英语。由于要识别派生词并不是那么容易,因此正则
SQL参考-全文检索
全文检索介绍表和索引控制文本搜索附加功能解析器词典配置示例测试和调试文本搜索限制约束
类型转换-UNION,CASE和相关构造
SQLUNION构造必须把那些可能不太相似的类型匹配起来成为一个结果集。解析算法分别应用于联合查询的每个输出字段。INTERSECT和EXCEPT构造对不相同的类型使用和UNION相同的算法进行解析。CASE、ARRAY、VALUES、GREATEST和LEAST构造也使用同样的算法匹配它的部件表达
类型转换-值存储
值存储数据类型解析查找与目标字段准确的匹配。试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已注册的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。检查一下看目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。
类型转换-函数
函数类型解析从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名字,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。查找和输入参数类型完全匹配的函