C# 如何在WordDelimiter标记过滤器上设置自定义参数

C# 如何在WordDelimiter标记过滤器上设置自定义参数,c#,.net-core,azure-cognitive-search,azure-search-.net-sdk,C#,.net Core,Azure Cognitive Search,Azure Search .net Sdk,我想在C#中使用.NET SDK使用Azure搜索。如何创建使用WordDelimiter TokenFilter并将属性preserveOriginal设置为true的分析器 自定义分析器的属性似乎只包括令牌过滤器名称 private static void CmdletIndex(ISearchServiceClient serviceClient) { var definition = new Index { Name = "cmdlets",

我想在C#中使用.NET SDK使用Azure搜索。如何创建使用WordDelimiter TokenFilter并将属性
preserveOriginal
设置为true的分析器

自定义分析器的属性似乎只包括令牌过滤器名称

private static void CmdletIndex(ISearchServiceClient 
serviceClient)
{
  var definition = new Index
  {
    Name = "cmdlets",
    Fields = FieldBuilder.BuildForType<CmdletModel>(),
    Analyzers = new[]
    {
        new CustomAnalyzer
        {
            Name = "my_analyzer",
            Tokenizer = TokenizerName.Standard,
            TokenFilters = new[]
            {
                TokenFilterName.WordDelimiter
            }
        }
    }
  };

  serviceClient.Indexes.Create(definition);
}
private static void CmdletIndex(ISearchServiceClient)
服务客户机)
{
var定义=新指数
{
Name=“cmdlet”,
Fields=FieldBuilder.BuildForType(),
分析器=新[]
{
新CustomAnalyzer
{
Name=“my_analyzer”,
Tokenizer=TokenizerName.Standard,
TokenFilters=new[]
{
TokenFilterName.WordDelimiter
}
}
}
};
serviceClient.index.Create(定义);
}

如何使用创建一个字分隔符标记过滤器并设置自定义属性?

您需要首先定义一个基于
字分隔符的标记过滤器,然后在自定义分析器中引用它

我手头没有示例,但根据您问题中的代码,以下是我认为它将如何工作(免责声明:未经测试;甚至不确定它是否可以编译,但希望它能为您提供总体思路):

private static void CmdletIndex(ISearchServiceClient)
服务客户机)
{
var定义=新指数
{
Name=“cmdlet”,
Fields=FieldBuilder.BuildForType(),
分析器=新[]
{
新CustomAnalyzer
{
Name=“my_analyzer”,
Tokenizer=TokenizerName.Standard,
TokenFilters=new[]
{
“我的单词分隔符过滤器”
}
}
},
TokenFilters=new[]
{
新的WordDelimiterTokenFilter()
{
Name=“我的单词分隔符过滤器”,
保留原始=真
}
}
};
serviceClient.index.Create(定义);
}
另外,请注意,Azure认知搜索的全新SDK将很快(2020年7月)面世。它类似于Microsoft.Azure.Search,但不向后兼容。如果您想评估预览并提供反馈,您可以找到它