2017-06-12 12 views
0

API/SDK属性を使用してAzure Searchインデックスを設定しています。しかし、アプリの設定に基づいて特定のインデックスのアナライザーを変更できるようにしたいとします(つまり、ユーザーが言語をフランス語に設定するため、このインデックスでフランスアナライザーが使用されます)。私のインデックスのプロパティAzure Search API/SDKアナライザー属性の代替

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

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

のカップルの

例Iには、Microsoft英語のいずれかにアナライザを設定しています。しかし、別のインデックスを作成したいとしますが、今回はMicrosoft French Analyzerを使用します。

属性を使用することとは別にプログラムでこれを設定する方法はありますか?イベントのいくつかの並べ替え? OnIndexCreatingなど...より複雑なアプリケーションを制限しているので。

ユーザーが選択できる言語がわからないため、言語ごとに個別のフィールドを設定することはできません。

助けてください。あなたのIndexインスタンスはモデルクラスから作成されたら

答えて

1

、あなたがFieldsのリストにアクセスし、自分のpropertiesを変更することができ、Analyzerはそのうちの一つです。

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

をどちらの場合も、あなたはユーザの入力として、あるいは設定から​​受け取ることができるアナライザ名、の文字列を使用することができます。

+0

申し訳ありませんが間違っています。 「アナライザーが選択されると、Microsoft Webサイトからのフィールドで変更することはできません。 – leen3o

+0

私たちの文書は、既存のフィールドでアナライザーを変更できないことを説明しています。あなたがプログラムで構築しているインデックスのフィールドでアナライザーを変更したいが、まだサービスには存在しないという質問から、私は理解している。これは本当ですか? – Yahnoosh

+0

はい、正しいです。 @ Yahnoosh – leen3o

関連する問題