我正在使用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等......因为它限制了更复杂的应用程序。
我不能为每种语言设置单独的字段,因为我不知道用户可能选择哪种语言。
任何帮助表示感谢。
答案 0 :(得分:1)
从模型类创建Index实例后,您可以访问Fields列表并更改其properties,Analyzer就是其中之一。< / 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")
}
}
在这两种情况下,您都可以使用字符串作为分析器名称,您可以将其作为用户输入或配置接收。