synonym
synonym 词典:用同义词替换单词
当前查看 PostgreSQL 18.6。
说明
synonym 词典:用同义词替换单词
- 模板名称(tmplname)
- synonym
- 初始化函数(tmplinit)
- dsynonym_init
- 词法化函数(tmpllexize)
- dsynonym_lexize
手册定义
这个词典模板用于创建把一个单词替换为同义词的词典。不支持短语(对此请使用分类词典模板第 12.6.4 节)。同义词词典可以用来克服语言学上的问题,例如防止英语词干分析词典把“Paris”约简成“pari”。只要在同义词词典中加入一行 Paris paris,并把该词典放在 english_stem 词典之前即可。例如:
SELECT * FROM ts_debug('english', 'Paris');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+-------+----------------+--------------+---------
asciiword | Word, all ASCII | Paris | {english_stem} | english_stem | {pari}
CREATE TEXT SEARCH DICTIONARY my_synonym (
TEMPLATE = synonym,
SYNONYMS = my_synonyms
);
ALTER TEXT SEARCH CONFIGURATION english
ALTER MAPPING FOR asciiword
WITH my_synonym, english_stem;
SELECT * FROM ts_debug('english', 'Paris');
alias | description | token | dictionaries | dictionary | lexemes
-----------+-----------------+-------+---------------------------+------------+---------
asciiword | Word, all ASCII | Paris | {my_synonym,english_stem} | my_synonym | {paris}
synonym模板要求的唯一参数是SYNONYMS,它是其配置文件的基名 — 上例中的my_synonyms。该文件的完整名称将是$SHAREDIR/tsearch_data/my_synonyms.syn(其中$SHAREDIR表示PostgreSQL安装的共享数据目录)。该文件格式是每行一个要被替换的词,后面跟着它的同义词,用空白分隔。空行和结尾的空格会被忽略。
synonym模板还有一个可选参数CaseSensitive,默认值为false。当CaseSensitive为false时,同义词文件中的词会像输入词元一样折叠为小写。当它为true时,词和词元都不会被折叠为小写,而是按原样比较。
可以在配置文件中把星号(*)放在同义词末尾,表示该同义词是一个前缀。当该条目用于 to_tsvector() 时,星号会被忽略;但当它用于 to_tsquery() 时,结果将是一个带有前缀匹配标记的查询项(见第 12.3.2 节)。例如,假设在 $SHAREDIR/tsearch_data/synonym_sample.syn 中有以下条目:
postgres pgsql postgresql pgsql postgre pgsql gogle googl indices index*
那么将得到如下结果:
mydb=# CREATE TEXT SEARCH DICTIONARY syn (template=synonym, synonyms='synonym_sample');
mydb=# SELECT ts_lexize('syn', 'indices');
ts_lexize
-----------
{index}
(1 row)
mydb=# CREATE TEXT SEARCH CONFIGURATION tst (copy=simple);
mydb=# ALTER TEXT SEARCH CONFIGURATION tst ALTER MAPPING FOR asciiword WITH syn;
mydb=# SELECT to_tsvector('tst', 'indices');
to_tsvector
-------------
'index':1
(1 row)
mydb=# SELECT to_tsquery('tst', 'indices');
to_tsquery
------------
'index':*
(1 row)
mydb=# SELECT 'indexes are very useful'::tsvector;
tsvector
---------------------------------
'are' 'indexes' 'useful' 'very'
(1 row)
mydb=# SELECT 'indexes are very useful'::tsvector @@ to_tsquery('tst', 'indices');
?column?
----------
t
(1 row)
文档与源码
来源构建
- 版本
- 18.6
- 构建
- https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
- 来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f
版本比较
PostgreSQL 17 → 18: 无变化。
比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。
相关条目
导出 JSON · 返回全文检索组件 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。