1 自定义分析器
1.1 标准标记符
Milvus 中的standard
令牌分割器根据空格和标点符号分割文本,适用于大多数语言。要配置使用standard
令牌转换器的分析器,请在analyzer_params
中将tokenizer
设置为standard
。
analyzer_params = {"tokenizer": "standard",
}
standard
标记符号分析器可与一个或多个过滤器结合使用。例如,以下代码定义了一个使用standard
标记器和lowercase
过滤器的分析器:
analyzer_params = {"tokenizer": "standard","filter": ["lowercase"]
}
定义analyzer_params
后,可以在定义 Collections Schema 时将它们应用到VARCHAR
字段。这样,Milvus 就能使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
1.2 空格
只要单词之间有空格,whitespace
标记符号器就会将文本划分为术语。要配置使用whitespace
标记符号生成器的分析器,请在analyzer_params
中将tokenizer
设置为whitespace
。
analyzer_params = {"tokenizer": "whitespace",
}
空白标记符可以与一个或多个过滤器结合使用。例如,下面的代码定义了一个使用whitespace
标记符和lowercase
过滤器的分析器:
analyzer_params = {"tokenizer": "whitespace","filter": ["lowercase"]
}
定义analyzer_params
后,可以在定义 Collections Schema 时将它们应用到VARCHAR
字段。这样,Milvus 就能使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
1.3 词霸
jieba
标记符号转换器可将中文文本分解为单词。
# 简单配置:仅指定标记器名称
analyzer_params = {"tokenizer": "jieba", # 使用默认设置:dict=["_default_"], mode="search", hmm=true
}
分析器配置示例:
analyzer_params = {"tokenizer": {"type": "jieba","dict": ["结巴分词器"],"mode": "exact","hmm": False}
}
预期输出:
['milvus', '结巴分词器', '中', '文', '测', '试']
2 过滤器
2.1 小写
lowercase
过滤器将标记符号生成器生成的术语转换为小写,使搜索不区分大小写。例如,它可以将["High", "Performance", "Vector", "Database"]
转换为["high", "performance", "vector", "database"]
。
lowercase
过滤器内置于 Milvus。要使用它,只需在analyzer_params
中的filter
部分指定其名称即可。
analyzer_params = {"tokenizer": "standard","filter": ["lowercase"],
}
lowercase
过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
2.2 ASCII 折叠
asciifolding
过滤器可将基本拉丁统一码块(前 127 个 ASCII 字符)以外的字符转换为其 ASCII 对应字符。asciifolding
过滤器内置在 Milvus 中。要使用它,只需在analyzer_params
中的filter
部分指定其名称即可。
analyzer_params = {"tokenizer": "standard","filter": ["asciifolding"],
}
asciifolding
过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
2.3 仅字母
alphanumonly
过滤器删除包含非 ASCII 字符的标记,只保留字母数字术语。该过滤器适用于处理只有基本字母和数字的文本,不包括任何特殊字符或符号。alphanumonly
过滤器内置在 Milvus 中。要使用它,只需在analyzer_params
中的filter
部分指定其名称即可。
analyzer_params = {"tokenizer": "standard","filter": ["alphanumonly"],
}
alphanumonly
过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
预期输出
['Milvus', '2', '0', 'Scale', 'AI', 'Vector']
2.4 Cnalphanumonly
cnalphanumonly
过滤器会删除包含除汉字、英文字母或数字以外的任何字符的标记。cnalphanumonly
过滤器内置于 Milvus 中。要使用它,只需在analyzer_params
中的filter
部分指定其名称即可。
analyzer_params = {"tokenizer": "standard","filter": ["cnalphanumonly"],
}
cnalphanumonly
过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
预期输出
['Milvus', '是', 'LF', 'AI', 'Data', 'Foundation', '下的一个开源项目', '以', 'Apache', '2', '0', '许可发布']
2.5 Cncharonly
cncharonly
过滤器会删除包含任何非中文字符的标记。当您只想关注中文文本,过滤掉任何包含其他脚本、数字或符号的标记时,该过滤器非常有用。cncharonly
过滤器内置在 Milvus 中。要使用它,只需在analyzer_params
中的filter
部分指定其名称即可。
analyzer_params = {"tokenizer": "standard","filter": ["cncharonly"],
}
cncharonly
过滤器对标记符生成的术语进行操作,因此必须与标记符结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
预期输出
['是', '下的一个开源项目', '以', '许可发布']
2.6 长度
length
过滤器可移除不符合指定长度要求的标记,让您可以控制文本处理过程中保留的标记长度。length
过滤器是 Milvus 中的自定义过滤器,通过在过滤器配置中设置"type": "length"
来指定。您可以在analyzer_params
中将其配置为字典,以定义长度限制。
analyzer_params = {"tokenizer": "standard","filter":[{"type": "length", # 指定过滤器类型为length"max": 10, # 将最大令牌长度设置为10个字符}],
}
length
过滤器接受以下可配置参数。
参数 | 说明 |
---|---|
| 设置最大标记长度。超过此长度的标记将被删除。 |
length
过滤器对标记符生成器生成的术语进行操作,因此必须与标记符生成器结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
2.7 停止词
stop
过滤器会从标记化文本中移除指定的停止词,帮助剔除常见的、意义不大的词。您可以使用stop_words
参数配置停用词列表。stop
过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "stop"
以及提供停用词列表的stop_words
参数。
analyzer_params = {"tokenizer": "standard","filter":[{"type": "stop", # S指定过滤器类型为stop"stop_words": ["of", "to", "_english_"], # 定义自定义停止词并包括英语停止词列表}],
}
stop
过滤器接受以下可配置参数。
参数 | 说明 |
---|---|
| 要从标记化中删除的单词列表。默认情况下,使用预定义的 |
stop
过滤器对标记化器生成的词语进行操作,因此必须与标记化器结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
2.8 分词器
decompounder
过滤器可根据指定词典将复合词拆分成单个成分,从而更方便地搜索复合词的各个部分。该过滤器对德语等经常使用复合词的语言尤其有用。decompounder
过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "decompounder"
,同时指定word_list
参数,该参数提供了要识别的单词成分字典。
analyzer_params = {"tokenizer": "standard","filter":[{"type": "decompounder", # 指定过滤器类型为分解器"word_list": ["dampf", "schiff", "fahrt", "brot", "backen", "automat"],}],
}
decompounder
过滤器接受以下可配置参数。
参数 | 说明 |
---|---|
| 用于拆分复合词的单词成分列表。该字典决定了如何将复合词分解为单个术语。 |
decompounder
过滤器对标记化器生成的术语进行操作,因此必须与标记化器结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。
预期输出
['dampf', 'schiff', 'fahrt', 'brotbackautomat']
2.9 词干
stemmer
过滤器可将单词还原为其基本形式或词根形式(称为词干化),从而更容易匹配不同词性中含义相似的单词。stemmer
过滤器支持多种语言,可在各种语言环境中进行有效搜索和索引。stemmer
过滤器是 Milvus 的自定义过滤器。要使用它,请在过滤器配置中指定"type": "stemmer"
,并使用language
参数选择所需的语言进行词干处理。
analyzer_params = {"tokenizer": "standard","filter":[{"type": "stemmer", # 将筛选器类型指定为stemmer"language": "english", # 将词干提取的语言设置为英语}],
}
stemmer
过滤器接受以下可配置参数。
参数 | 参数 |
---|---|
| 指定词干处理的语言。支持的语言包括 |
stemmer
过滤器对标记化器生成的术语进行操作,因此必须与标记化器结合使用。定义analyzer_params
后,可以在定义 Collections Schema 时将其应用到VARCHAR
字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。