跳到主要内容

Whitespace

whitespace 分词器在五种 ASCII 空白字符处切分文本:水平制表符、换行符、换页符、回车符和空格。

分词规则

whitespace 分词器仅在以下五种 ASCII 空白字符处切分文本:

字符名称Unicode 码点
\t水平制表符U+0009
\n换行符U+000A
\x0C\f换页符U+000C
\r回车符U+000D
' '空格U+0020

这些分隔符会在切分时丢弃,连续的分隔符不会产生空词项。标点符号和其他字符会保留在词项中。特别是,垂直制表符(\x0B,U+000B)、不换行空格(\u00A0)和全角空格(\u3000)都不会触发切分。

这一字符集合遵循 Rust 的 char::is_ascii_whitespace(),不包含其他 Unicode 空白字符。

以下示例使用 {"tokenizer": "whitespace"},不添加任何过滤器。输入和输出采用 Python 字符串表示法:\t\u00A0 等转义序列表示实际字符。

输入输出词项
"a\tb\nc\x0Cd\re f"["a", "b", "c", "d", "e", "f"]
"Hello,World! foo_bar"["Hello,World!", "foo_bar"]
"a\x0Bb"["a\x0Bb"]
"a\u00A0b"["a\u00A0b"]
"a\u3000b"["a\u3000b"]
"\x20a\x20\x20b\x20"["a", "b"]

配置

要使用空格分词器配置分析器,请在 analyzer_params 中将 tokenizer 设置为 whitespace

python
analyzer_params = {
"tokenizer": "whitespace",
}

空格分词器可以与一个或多个过滤器结合使用。例如,以下代码定义了一个使用空格分词器和小写过滤器的分析器:

python
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase"]
}

定义 analyzer_params 后,您可以在定义 Collection Schema 时将其应用于 VARCHAR 字段。这使得 Zilliz Cloud 能够使用指定的分析器处理该字段中的文本,以实现高效的分词和过滤。更多信息,请参阅使用示例

使用示例

在完成 Analyzer 配置后,您可以使用 run_analyzer 方法来验证分词效果是否符合预期。

Analyzer 配置

python
analyzer_params = {
"tokenizer": "whitespace",
"filter": ["lowercase"]
}

使用 run_analyzer 验证效果

python
from pymilvus import (
MilvusClient,
)

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"

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

预期输出

sql
['the', 'milvus', 'vector', 'database', 'is', 'built', 'for', 'scale!']