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

Decompounder

decompounder 过滤器可根据指定词典将复合词拆分成单个成分,从而更方便地搜索复合词的各个部分。该过滤器对德语等经常使用复合词的语言尤其有用。

配置

decompounder 过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定 "type": "decompounder",同时指定 word_list 参数,该参数提供了要识别的单词成分字典。

Python
analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "decompounder", # Specifies the filter type as decompounder
"word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],
}],
}

decompounder 过滤器接受以下可配置参数。

参数

说明

word_list

用于拆分复合词的单词成分列表。该字典决定了如何将复合词分解为单个术语。

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

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

示例

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

Analyzer 配置

Python
analyzer_params = {
"tokenizer": "standard",
"filter":[{
"type": "decompounder", # Specifies the filter type as decompounder
"word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],
}],
}

验证使用 run_analyzer

Python
from pymilvus import (
MilvusClient,
)

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

# Sample text to analyze
sample_text = "dampfschifffahrt brotbackautomat"

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

预期输出

Python
['dampf', 'schiff', 'fahrt', 'brotbackautomat']