You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Cognitive Search中无法创建Path Hierarchy Tokenizer问题排查

问题原因及解决方法

你遇到的错误是因为直接用字典结构定义分词器和分析器,而Azure Cognitive Search Python SDK需要使用SDK提供的具体类来创建这些组件,而非REST API风格的字典格式。SDK无法识别字典中的@odata.type字段,会默认使用抽象的LexicalTokenizer类,而抽象类无法实例化,从而抛出错误。

修正步骤

  1. 导入SDK对应类
    从azure.search.documents.indexes.models导入所需的类:

    from azure.search.documents.indexes.models import (
        PathHierarchyTokenizerV2,
        CustomAnalyzer,
        SearchIndex
    )
    
  2. 用类实例化分词器
    替换原来的字典定义,用PathHierarchyTokenizerV2类创建分词器:

    tokenizer = PathHierarchyTokenizerV2(
        name="taxonomy_delimiter",
        delimiter=" ● ",
        max_token_length=10000
    )
    
  3. 用类实例化自定义分析器
    同样用CustomAnalyzer类创建分析器,直接引用分词器名称和内置过滤器:

    analyzer = CustomAnalyzer(
        name="taxonomy",
        tokenizer_name="taxonomy_delimiter",
        token_filters=["asciifolding", "lowercase", "trim"]
    )
    
  4. 构建索引并创建
    在创建SearchIndex时,将实例化的tokenizer和analyzer添加到对应的列表中:

    index = SearchIndex(
        name="your-index-name",
        fields=[...],  # 填入你的字段定义
        tokenizers=[tokenizer],
        analyzers=[analyzer]
    )
    
    # 执行创建索引
    client = SearchIndexClient(endpoint, AzureKeyCredential(key_admin1), api_version='2021-04-30-Preview')
    client.create_index(index)
    

关键说明

Python SDK是面向对象封装的,所有的分析器、分词器、过滤器都有对应的类,需要用这些类来构建实例,而不是直接使用REST API的字典格式。SDK会自动处理@odata.type等底层字段,无需手动指定。

内容的提问来源于stack exchange,提问作者Fruity Medley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:15:10