Create custom token filter with NEST

前端 未结 1 1404
温柔的废话
温柔的废话 2020-12-17 20:43

How can I configure Index using NEST with such JSON:

\"settings\":{
  \"analysis\":{
     \"filter\":{
        \"name_ngrams\":{
           \"side\":\"front\         


        
相关标签:
1条回答
  • 2020-12-17 21:39

    After some searching I've found a solution:

    var partialName = new CustomAnalyzer
                {
                    Filter = new List<string> {"lowercase", "name_ngrams", "standard", "asciifolding"},
                    Tokenizer = "standard"
                };
    
    var fullName = new CustomAnalyzer
                {
                    Filter = new List<string> {"standard", "lowercase", "asciifolding"},
                    Tokenizer = "standard"
                };
    
    client.CreateIndex("indexname", c => c
                    .Analysis(descriptor => descriptor
                        .TokenFilters(bases => bases.Add("name_ngrams", new EdgeNGramTokenFilter
                        {
                            MaxGram = 20,
                            MinGram = 2,
                            Side = "front"
                        }))
                        .Analyzers(bases => bases
                            .Add("partial_name", partialName)
                            .Add("full_name", fullName))
                    )
                    .AddMapping<Company>(m => m
                        .Properties(o => o
                            .String(i => i
                                .Name(x => x.Name)
                                .IndexAnalyzer("partial_name")
                                .SearchAnalyzer("full_name")
                            ))));
    
    0 讨论(0)
提交回复
热议问题