【问题标题】:Azure Search API/SDK Analyzer Attribute AlternativeAzure 搜索 API/SDK 分析器属性替代
【发布时间】:2017-11-13 18:09:48
【问题描述】:

我正在使用 API/SDK 属性设置我的 Azure 搜索索引。但我希望能够根据应用设置更改特定索引的分析器(即用户将语言设置为法语,因此该索引将使用法语分析器)。

我的几个索引属性的示例

    [IsSearchable]
    [Analyzer(AnalyzerName.AsString.EnMicrosoft)]
    public string Title { get; set; }

    [IsSearchable]
    [Analyzer(AnalyzerName.AsString.EnMicrosoft)]
    public string Description { get; set; }

我将分析器设置为 Microsoft 英语。但是,假设我想创建另一个索引,但这次使用的是 Microsoft French Analyzer。

除了使用属性之外,有没有办法以编程方式设置它?某种事件? OnIndexCreating 等...因为它限制了更复杂的应用程序。

我也不能为每种语言设置单独的字段,因为我不知道用户可能会选择哪种语言。

任何帮助表示赞赏。

【问题讨论】:

    标签: azure-cognitive-search azure-search-.net-sdk


    【解决方案1】:

    从模型类创建 Index 实例后,您可以访问 Fields 列表并更改其 propertiesAnalyzer 就是其中之一。

    var index = new Index()
    {
        Name = "myindex",
        Fields = FieldBuilder.BuildForType<MyModel>()
    };
    
    Field field = index.Fields.First(f => f.Name == "Title");
    field.Analyzer = "fr.microsoft"; // There is an implicit conversion from string to AnalyzerName.
    

    或者,您可以自己构建 Field 实例:

    var index = new Index()
    {
        Name = "myindex",
        Fields = new List<Field>()
        {
            new Field("Title", DataType.String, "fr.microsoft"),
            new Field("Description", DataType.String, "fr.microsoft")
        }
    }
    

    在这两种情况下,您都可以使用字符串作为分析器名称,您可以将其作为用户输入或从配置中接收。

    【讨论】:

    • 抱歉不正确。 “一旦选择了分析仪,就无法更改字段”,来自 Microsoft 网站。
    • 我们的文档说明无法在现有字段上更改分析器。从您的问题中我了解到,您想更改您正在以编程方式构建但服务中尚不存在的索引字段上的分析器。这不是真的吗?
    • 根据问题。我想使用相同的类,但只是在创建索引之前根据用户输入更改分析器。
    • 您可以通过在字段上设置分析器属性来做到这一点。
    • 你能根据我上面的问题给我一个例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    相关资源
    最近更新 更多