功能开启:
修改配置文件uxsinodb.conf,,加载postgres_adaptor库:
shared_preload_libraries = 'postgres_adaptor'
重启dbserver。
如果提示类似ux_*未定义,可以修改UXDB安装目录下的dbsql/share/extension/postgres_adaptor.data文件。增加相应的PG和UXDB对应关系,需要注意的是这些配置项需要保证字典序排序,每个配置项的最大长度为63个字符,最多为2048个配置项。
uxsql -d uxdb -U uxdb uxdb=# CREATE EXTENSION zhparser; uxdb=# \dFp
List of text search parsers Schema | Name | Description ------------+----------+--------------------- public | zhparser | ux_catalog | default | default word parser
新增“zhparser”FTS解析器。
uxdb=# select ts_token_type('zhparser');
ts_token_type ----------------------------------------- (97,a,adjective) (98,b,"differentiation (qu bie)") (99,c,conjunction) (100,d,adverb) (101,e,exclamation) (102,f,"position (fang wei)") (103,g,"root (ci gen)") (104,h,head) (105,i,idiom) (106,j,"abbreviation (jian lue)") (107,k,head) (108,l,"tmp (lin shi)") (109,m,numeral) (110,n,noun) (111,o,onomatopoeia) (112,p,prepositional) (113,q,quantity) (114,r,pronoun) (115,s,space) (116,t,time) (117,u,auxiliary) (118,v,verb) (119,w,"punctuation (qi ta biao dian)") (120,x,unknown) (121,y,"modal (yu qi)") (122,z,"status (zhuang tai)")
表?2.2.?token类型
词性缩写 | 中文名称 | 描述 |
---|---|---|
a | 形容词 | 取英语形容词adjective的第1个字母。 |
b | 区别词 | 取汉字“别”的声母。 |
c | 连词 | 取英语连词conjunction的第1个字母。 |
d | 副词 | 取adverb的第2个字母,a已有他用。 |
e | 叹词 | 取英语叹词exclamation的第1个字母。 |
f | 方位词 | 取汉字“方”的声母。 |
g | 词根 | 绝大多数语素都能作为合成词的“词根”,取汉字“根”的声母。 |
h | 前接成分 | 取英语head的第1个字母。 |
i | 成语 | 取英语成语idiom的第1个字母。 |
j | 简称略语 | 取汉字“简”的声母。 |
k | 后接成分 | 取英语成语back的第4个字母,b、a、c已有他用。 |
l | 习用语 | 习用语尚未成为成语,有“临时性”的意思,取“临”的声母。 |
m | 数词 | 取英语numeral的第3个字母,n、u已有他用。 |
n | 名词 | 取英语名词noun的第1个字母。 |
o | 拟声词 | 取英语拟声词onomatopoeia的第1个字母。 |
p | 介词 | 取英语介词prepositional的第1个字母。 |
q | 量词 | 取英语quantity的第1个字母。 |
r | 代词 | 取英语代词pronoun的第2个字母,p已有他用。 |
s | 处所词 | 取英语space的第1个字母。 |
t | 时间词 | 取英语time的第1个字母。 |
u | 其他助词 | 取英语助词auxiliary的第2个字母,a已有他用。 |
v | 动词 | 取英语动词verb的第1个字母。 |
w | 标点符号 | 其他标点符号。 |
x | 非语素字 | 非语素字只是一个符号,字母x通常用于代表未知数、符号。 |
y | 语气词 | 取汉字“语”的声母。 |
z | 状态词 | 取汉字“状”的声母的前一个字母。 |
uxdb=# CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser);
uxdb=# ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z WITH simple;
为防止遗漏造成匹配失败,将所有token类型全部映射。如果有未添加的token类型,将被屏蔽。示例如下:
uxdb=# CREATE TEXT SEARCH CONFIGURATION testzhcfg1 (PARSER = zhparser); uxdb=# ALTER TEXT SEARCH CONFIGURATION testzhcfg1 ADD MAPPING FOR n,v,a,i,e,l WITH simple; uxdb=# SELECT to_tsvector('testzhcfg1','南大 北大 东大 西大') ;
to_tsvector ---------------------------- '东大':2 '北大':1 '西大':3
uxdb=# SELECT to_tsvector('testzhcfg','南大 北大 东大 西大') ;
to_tsvector ------------------------------------- '东大':3 '北大':2 '南大':1 '西大':4
uxdb=# SELECT ts_debug('testzhcfg','南大 北大 东大 西大') ;
ts_debug ----------------------------------------- (j,"abbreviation (jian lue)",南大,{},,) (n,noun,北大,{simple},simple,{北大}) (n,noun,东大,{simple},simple,{东大}) (n,noun,西大,{simple},simple,{西大})
词典使用的是内置的simple词典,仅做小写转换。词典被用来移除停用词并规范化词。一个被成功地规范化的词被称为一个词位。除了提高搜索质量,规范化和移除停用词减小了文档的tsvector表示的尺寸,因而提高了性能。
根据需要可以灵活定义词典和token映射。