跳到主要内容
版本:v3.0.x

Decimal Digit

decimaldigit filter 是一个内置 token filter,可将受支持文字系统中的 Unicode 十进制数字转换为 ASCII 数字。这可以让不同语言和书写系统中的数值 token 保持一致。

Configuration

对于阿拉伯语文本,内置的 arabic analyzer 已包含 decimaldigit filter。当你需要在自定义 analyzer pipeline 中进行数字规范化时,请直接使用 decimaldigit

要在自定义 analyzer 中使用 decimaldigit filter,请将其添加到 analyzer_paramsfilter 部分:

Python
analyzer_params = {
"tokenizer": "standard",
"filter": ["decimaldigit"],
}

decimaldigit filter 没有可配置参数。

该 filter 会将 Unicode 十进制数字(包括阿拉伯-印度数字、泰文数字、天城文数字、孟加拉文数字和全角数字)转换为 ASCII 数字。它作用于 tokenizer 生成的 token。上面的配置有意作为自定义 analyzer 示例,并未包含完整的阿拉伯语处理 pipeline。

示例

在将 analyzer 配置应用到 Collection Schema 之前,请使用 run_analyzer 方法验证其行为。

Analyzer configuration

Python
analyzer_params = {
"tokenizer": "standard",
"filter": ["decimaldigit"],
}

使用 run_analyzer 验证

Python
from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

sample_text = "Arabic ١٢٣ Thai ๑๒๓ Devanagari १२३ Fullwidth 123"

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

预期输出

Text
['Arabic', '123', 'Thai', '123', 'Devanagari', '123', 'Fullwidth', '123']