跳到主要内容
版本:v2.6.x

ASCII Folding

asciifolding 过滤器可将 基本拉丁统一码块(前 127 个 ASCII 字符)以外的字符转换为其 ASCII 对应字符。例如,它可将 í 等字符转换为 i,使文本处理更简单、更一致,特别是对于多语言内容。

配置

asciifolding 过滤器内置于 Milvus 中。要使用它,只需在 analyzer_params 中的 filter 部分指定其名称即可。

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

asciifolding 过滤器对 Tokenizer(分词器)生成的 Token(词元)进行操作,因此必须与 Tokenizer 结合使用。有关 Milvus 中可用的 Tokenizer(分词器)列表,请参阅 Standard Tokenizer及其同类页面。

定义 analyzer_params 后,可以在定义 Collection Schema 时将其应用到 VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。有关详情,请参阅 示例使用

示例

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

Analyzer 配置

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

验证使用 run_analyzer

Python
from pymilvus import (
MilvusClient,
)

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

# Sample text to analyze
sample_text = "Café Möller serves crème brûlée and piñatas."

# Run the standard analyzer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Standard analyzer output:", result)

预期输出

Python
['Cafe', 'Moller', 'serves', 'creme', 'brulee', 'and', 'pinatas']