c# - NGram Tokenizer 中 max_gram 和 min_gram 的区别

标签 c# elasticsearch nest

我目前正在尝试在 .NET 项目中配置 Elasticsearch 索引(我是 ES 新手)。

我们正在使用 NEST 7.3.0

client.Indices.Create(lineItemIndex,
                c => c
                    .Settings(s => s
                    .Analysis(a => a
                        .Analyzers(aa => aa
                            .Custom("mynGram_analyzer",ca => ca
                            .Filters(new List<string> {"lowercase"})
                            .Tokenizer("mynGram")))
                        .TokenFilters(tf => tf
                            .NGram("mynGram", td => td
                                .MaxGram(15).MinGram(4)))))
                    .Map<ElasticSearchLineItem>(m => m
                        .Properties(ps => ps
                            .Text(ss => ss
                            .Name(na => na.LineItemName)
                            .Analyzer("mynGram")))
                        .Properties(ps => ps
                            .Keyword(kw => kw
                                .Name(na => na.LineItemId)))
                        .Properties(ps => ps
                            .Text(ss => ss
                            .Name(na => na.LineItemNumber)
                            .Analyzer("mynGram")))));

我收到以下错误:

Type: illegal_argument_exception Reason: "The difference between max_gram and min_gram in NGram Tokenizer must be less than or equal to: 1 but was [11]. This limit can be set by changing the [index.max_ngram_diff] index level setting."

我了解问题所在。但我不知道在哪里设置这个 max_ngram_diff 设置。我正在查看 the documentation .

但他们使用 3 来表示最小值和最大值。

我还找到了一个示例,其中他们在 JSON 中有设置,可以发送到 ES,但我无法在 c# 代码中复制它。我希望有人可以帮助我。

最佳答案

您可以通过以下方式更改此设置

var createIndexResponse = await client.Indices.CreateAsync("index_name",
    c => c.Settings(s => s.Setting(UpdatableIndexSettings.MaxNGramDiff, 11)));

希望对您有所帮助。

关于c# - NGram Tokenizer 中 max_gram 和 min_gram 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57968572/

相关文章:

c# - 如何解码用 JavaScriptStringEncoded 编码的字符串?

c# - Silverlight 中的 "ShowDialog/DialogResult"替代方案

C# 使用 tcp 和 udp 协议(protocol)

elasticsearch - Logstash-如果在下一个预定时间开始之前预定任务没有完成,会发生什么情况?

c# - C#Nest:如何将Elasticsearch搜索查询动态追加到多搜索Nest查询?

elasticsearch - 如何为Elasticsearch Nest使用两个并行聚合

c# - Nest 1.0 Elasticsearch,将DateTime索引为ISO 8601

c# - 解析 xml 并显示节点值时删除 "#text"

Elasticsearch read_only_allow_delete 自动设置

amazon-web-services - 在 Elasticsearch 上自动添加节点