欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Milvus(13):自定义分析器、过滤器

Milvus(13):自定义分析器、过滤器

2025/5/5 23:50:42 来源:https://blog.csdn.net/qq_40298351/article/details/147694164  浏览:    关键词:Milvus(13):自定义分析器、过滤器

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 过滤器接受以下可配置参数。

参数

说明

max

设置最大标记长度。超过此长度的标记将被删除。

   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_words

要从标记化中删除的单词列表。默认情况下,使用预定义的_english_ 列表,其中包含常见的英文停止词。

   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 过滤器接受以下可配置参数。

参数

说明

word_list

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

   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 过滤器接受以下可配置参数。

参数

参数

language

指定词干处理的语言。支持的语言包括"arabic","danish","dutch","english","finnish","french","german","greek","hungarian","italian","norwegian","portuguese","romanian","russian","spanish","swedish","tamil" 、"turkish"

   stemmer 过滤器对标记化器生成的术语进行操作,因此必须与标记化器结合使用。定义analyzer_params 后,可以在定义 Collections Schema 时将其应用到VARCHAR 字段。这样,Milvus 就可以使用指定的分析器对该字段中的文本进行处理,从而实现高效的标记化和过滤。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词