【问题标题】:Create custom token filter with NEST使用 NEST 创建自定义令牌过滤器
【发布时间】:2013-11-19 15:13:30
【问题描述】:

如何使用带有此类 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 类创建我的自定义分析器,但我找不到如何创建自定义过滤器并将其注册到我的分析器中。

提前致谢!

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    经过一番搜索,我找到了解决方案:

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

    【讨论】:

    • 索引分析器和搜索分析器有什么区别?为什么需要单独申请?
    • 我使用这篇文章来了解它是如何工作的 - web.archive.org/web/20121021233420/http://…。它不再可以从原始网址获得,但希望它可以从 web.archive.org 访问
    • 对于使用 NEST v5.3 查看此解决方案的任何人......您需要 bases.UserDefined 而不是 bases.Add
    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 2014-09-26
    • 2018-12-19
    • 2019-02-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多