可以通过使用 v_txtindex.AdvTxtSearchLib
库中的两个基本用户定义的转换函数 (UDTF) 之一创建 UDTF,来配置分词器。库中包含两个基本分词器:一个用于 Log Words,一个用于 Ngrams。可以配置每个具有或不具有位置相关性的基本函数。
配置分词器
- 1: 分词器基本配置
- 2: RetrieveTokenizerproc_oid
- 3: 设置分词器参数
- 4: 查看分词器参数
- 5: 删除分词器配置文件
1 - 分词器基本配置
可以在多个不同的分词器基本配置中进行选择:
创建没有位置相关性的 logWord 分词器:
=> CREATE TRANSFORM FUNCTION v_txtindex.fooTokenizer AS LANGUAGE 'C++' NAME 'logWordITokenizerFactory' LIBRARY v_txtindex.logSearchLib NOT FENCED;
2 - RetrieveTokenizerproc_oid
创建分词器之后,Vertica 将名称和 proc_oid 写入系统表 vs_procedures 中。必须检索分词器的 proc_oid 以执行其他配置。
输入以下查询,替换您自己的分词器名称:
=> SELECT proc_oid FROM vs_procedures WHERE procedure_name = 'fooTokenizer';
3 - 设置分词器参数
使用分词器的 proc_oid 可以配置分词器。有关获取分词器 proc_oid 的详细信息,请参阅配置分词器。以下示例显示了如何配置各个分词器参数:
配置非索引字:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('stopwordscaseinsensitive','for,the' USING PARAMETERS proc_oid='45035996274128376');
配置主要分隔符:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('majorseparators', E'{}()&[]' USING PARAMETERS proc_oid='45035996274128376');
配置二级分隔符:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('minorseparators', '-,$' USING PARAMETERS proc_oid='45035996274128376');
配置最小长度:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('minlength', '1' USING PARAMETERS proc_oid='45035996274128376');
配置最大长度:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('maxlength', '140' USING PARAMETERS proc_oid='45035996274128376');
配置 ngramssize:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('ngramssize', '2' USING PARAMETERS proc_oid='45035996274128376');
锁定分词器参数
配置完分词器时,请将参数 used 设置为 True
。更改此设置后,将不能再更改分词器的参数。此时即可使用分词器来创建文本索引。
配置 used 参数:
=> SELECT v_txtindex.SET_TOKENIZER_PARAMETER('used', 'True' USING PARAMETERS proc_oid='45035996274128376');
另请参阅
SET_TOKENIZER_PARAMETER4 - 查看分词器参数
创建自定义分词器之后,您可以通过以下两种任一方式查看分词器的参数设置:
-
使用 GET_TOKENIZER_PARAMETER — 查看单个分词器参数设置。
-
使用 READ_CONFIG_FILE — 查看所有分词器参数设置。
查看单个分词器参数设置
如果您需要查看分词器的单个参数设置,可以使用 GET_TOKENIZER_PARAMETER 查看特定的分词器参数设置:
=> SELECT v_txtindex.GET_TOKENIZER_PARAMETER('majorseparators' USING PARAMETERS proc_oid='45035996274126984');
getTokenizerParameter
-----------------------
{}()&[]
(1 row)
有关详细信息,请参阅GET_TOKENIZER_PARAMETER。
查看所有分词器参数设置
如果您需要查看分词器的所有参数,可以使用 READ_CONFIG_FILE 查看分词器的所有参数设置:
=> SELECT v_txtindex.READ_CONFIG_FILE( USING PARAMETERS proc_oid='45035996274126984') OVER();
config_key | config_value
--------------------------+---------------
majorseparators | {}()&[]
maxlength | 140
minlength | 1
minorseparators | -,$
stopwordscaseinsensitive | for,the
type | 1
used | true
(7 rows)
如果 used 参数设置为 False
,则只能查看已对分词器应用的参数。
注意
Vertica 会自动提供 Type 值,除非使用的是 ngram 分词器,此分词器允许设置该值。有关详细信息,请参阅READ_CONFIG_FILE。
5 - 删除分词器配置文件
使用 DELETE_TOKENIZER_CONFIG_FILE 函数删除分词器配置文件。此函数不会删除用户定义的转换函数 (UDTF)。而是仅删除与 UDTF 关联的配置文件。
当参数“已使用 (used)”设置为 False
时,删除分词器配置文件:
=> SELECT v_txtindex.DELETE_TOKENIZER_CONFIG_FILE(USING PARAMETERS proc_oid='45035996274127086');
删除参数“确认 (confirm)”设置为 True
的分词器配置文件。此设置将强制执行配置文件删除操作,即使参数“已使用 (used)”也设置为 True
:
=> SELECT v_txtindex.DELETE_TOKENIZER_CONFIG_FILE(USING PARAMETERS proc_oid='45035996274126984', confirm='true');
有关详细信息,请参阅DELETE_TOKENIZER_CONFIG_FILE。