如何使用带有此类JSON的NEST配置索引:
"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" } } }
我可以使用CustomAnalyzer类创建自定义分析器,但找不到如何创建自定义过滤器并将其注册到分析器中的方法。
CustomAnalyzer
提前致谢!
经过一番搜索,我找到了一个解决方案:
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") ))));