跳转到主要内容

SQL 与 TOML 参考

pg_tokenizer 中全部 tokenizer_catalog SQL 函数与 TOML 配置选项的完整参考手册。

SQL 函数参考(tokenizer_catalog)

文本分析器与词典管理

函数签名 返回类型 说明
tokenizer_catalog.create_text_analyzer(name TEXT, config TEXT) VOID 根据 TOML 配置字符串创建命名文本分析器流水线。
tokenizer_catalog.drop_text_analyzer(name TEXT) VOID 按名称删除文本分析器。
tokenizer_catalog.apply_text_analyzer(text TEXT, text_analyzer_name TEXT) TEXT[] 使用指定文本分析器切分并过滤 text,返回词元数组以供调试预览。
tokenizer_catalog.create_stopwords(name TEXT, config TEXT) VOID 创建自定义停用词词典(每行一个停用词)。
tokenizer_catalog.drop_stopwords(name TEXT) VOID 删除自定义停用词词典。
tokenizer_catalog.create_synonym(name TEXT, config TEXT) VOID 创建自定义同义词词典(每行一组以空格分隔的同义词,统一映射为首词)。
tokenizer_catalog.drop_synonym(name TEXT) VOID 删除自定义同义词词典。

分词模型与预加载管理

函数签名 返回类型 说明
tokenizer_catalog.create_custom_model(name TEXT, config TEXT) VOID 基于现有数据表列构建自定义词表模型。
tokenizer_catalog.create_custom_model_tokenizer_and_trigger(tokenizer_name TEXT, model_name TEXT, text_analyzer_name TEXT, table_name TEXT, source_column TEXT, target_column TEXT) VOID 一键创建自定义词表模型与分词器,回填 target_column,并在 source_column 上安装自动更新触发器。
tokenizer_catalog.drop_custom_model(name TEXT) VOID 删除自定义词表模型。
tokenizer_catalog.create_huggingface_model(name TEXT, config TEXT) VOID 导入 HuggingFace tokenizer.json 模型定义。
tokenizer_catalog.drop_huggingface_model(name TEXT) VOID 删除已导入的 HuggingFace 模型。
tokenizer_catalog.create_lindera_model(name TEXT, config TEXT) VOID 根据 TOML 配置创建 Lindera 形态学分词模型。
tokenizer_catalog.drop_lindera_model(name TEXT) VOID 删除 Lindera 模型。
tokenizer_catalog.add_preload_model(name TEXT) VOID 将模型加入共享内存预加载列表(重启 PostgreSQL 后生效)。
tokenizer_catalog.remove_preload_model(name TEXT) VOID 将模型移出预加载列表。
tokenizer_catalog.list_preload_models() TEXT[] 列出当前已注册预加载的所有模型名称。

分词器执行函数

函数签名 返回类型 说明
tokenizer_catalog.create_tokenizer(name TEXT, config TEXT) VOID 创建分词器(组合可选的 text_analyzer 与必选的 model)。
tokenizer_catalog.drop_tokenizer(name TEXT) VOID 按名称删除分词器。
tokenizer_catalog.tokenize(text TEXT, tokenizer_name TEXT) INT[] 将 text 分词为整数词元 ID 数组(可隐式转换为 bm25vector)。

TOML 配置参数参考

text_analyzer 配置项

键名 类型 说明
character_filters 表数组 / 字符串数组 字符级过滤转换(to_lowercase、unicode_normalization = "nfc" | "nfd" | "nfkc" | "nfkd")。
pre_tokenizer 表 / 字符串 初始分词切分器(unicode_segmentation、regex = "..." 或 jieba)。
token_filters 表数组 / 字符串数组 词元级过滤器(skip_non_alphanumeric、stemmer、stopwords、synonym、pg_dict、ngram)。

tokenizer 配置项

键名 类型 说明
text_analyzer 字符串 已创建的 text_analyzer 名称(或内联 [text_analyzer] 表)。使用独立子词模型时无需配置。
model 字符串 内置预训练模型(llmlingua2、bert_base_uncased、wiki_tocken、gemma2b)或自定义/HuggingFace/Lindera 模型名称。

custom_model 配置项

键名 类型 说明
table 字符串 存放训练语料的数据表名称。
column 字符串 存放原始文本的 TEXT 列名称。
text_analyzer 字符串 用于提取词表词元的 text_analyzer 名称。

0.1.2 新增接口(未发布)

接口 返回类型 行为
tokenizer_catalog.analyze_to_tsvector(text TEXT, text_analyzer_name TEXT) TSVECTOR 将分析器输出的字符串词元转换为带位置的原生词素。
tokenizer_catalog.tokenize_to_tsvector(text TEXT, tokenizer_name TEXT) TSVECTOR 将模型输出的词元 ID 转为十进制词素,保留输出位置。

两个函数均为 STABLE;先存入列,再为该列创建 GIN/GiST 索引。文档与查询必须采用相同的词素表示,详见原生全文检索。

create_custom_model 的 TOML 配置新增可选字符串 filter,内容为源表列上的 SQL 布尔表达式,不包含 WHERE 或 NEW.。create_custom_model_tokenizer_and_trigger 新增七参重载,最后一参为 filter TEXT;原六参调用继续可用,省略过滤条件或传入 SQL NULL 表示选取全部行。table 支持带模式名的表名。详见过滤与并发语义。