NGram Tokenizer 中 max_gram 和 min_gram 之间的区别
difference between max_gram and min_gram in NGram Tokenizer
我目前正在尝试在 .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)));
希望对您有所帮助。
我目前正在尝试在 .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)));
希望对您有所帮助。