GBase 8c
其他
文章
GBase 8c解析文档(一)
发表于2023-12-07 09:28:4321次浏览1个评论
GBase 8c中提供了to_tsvector函数把文档处理成tsvector数据类型。
to_tsvector([ config regconfig, ] document text) returns tsvector
to_tsvector将文本文档解析为token,再将token简化到词素,并返回一个tsvector。其 中tsvector中列出了词素及它们在文档中的位置。文档是根据指定的或默认的文本搜索分词器进行处理的。这里有一个简单的例子:
gbase=#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
通过以上例子可发现结果tsvector不包含词a、on或者it,rats变成rat,并且忽略标点符号-。
to_tsvector函数内部调用一个解析器,将文档的文本分解成token并给每个token指定一个类型。对于每个token,有一系列词典可供查询。词典系列因token类型的不同而 不同。识别token的第一本词典将发出一个或多个标准词素来表示token。例如:
rats变成rat因为词典认为词rats是rat的复数形式。
有些词被作为停用词(请参考16.8.6.2 停用词),这样它们就会被忽略,因为它们出现得太过频繁以致于搜索中没有用处。比如例子中的a、on和it。
如果没有词典识别token,那么它也被忽略。在这个例子中,符号“-”被忽略, 因为词典没有给它分配token类型(空间符号),即空间记号永远不会被索引。
语法解析器、词典和要索引的token类型由选定的文本搜索分词器决定。可以在同一个数据库中有多种不同的分词器,以及提供各种语言的预定义分词器。在以上例子中, 使用缺省分词器english。
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528