Creating a custom token filter using NEST

How to set up an index using NEST with such JSON:

"settings":{ "analysis":{ "filter":{ "name_ngrams":{ "side":"front", "max_gram":50, "min_gram":2, "type":"edgeNGram" } }, "analyzer":{ "partial_name":{ "filter":[ "standard", "lowercase", "asciifolding", "name_ngrams" ], "type":"custom", "tokenizer":"standard" } } } 

I could create my own analyzer using the CustomAnalyzer class, but I could not find how to create my own filter and register it in my analyzer.

Thanks in advance!

+7
c # elasticsearch nest
source share
1 answer

After some searching, I 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") )))); 
+15
source share

All Articles