Azure Search API / SDK Analyzer属性备选

时间:2017-06-12 09:54:51

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

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

我的几个索引属性的示例

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

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

我将Analyzer设置为Microsoft English。但是,我想说我想创建另一个索引,但这次使用的是Microsoft French Analyzer。

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

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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

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

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")
    }
}

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