我正在使用休眠搜索注释,但是也有一个Elasticsearch实现。我的 token 生成器未根据其配置拆分。我特别希望该字符串至少被3个字符分隔。但是它忽略了我的配置,并继续将拆分为最少一个。我究竟做错了什么?
@AnalyzerDef(name = "EdgeNgram",
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = StandardFilterFactory.class),
@TokenFilterDef(factory = LowerCaseFilterFactory.class),
@TokenFilterDef(factory = NGramFilterFactory.class,
params = {
@Parameter(name = "minGramSize", value = "3"),
@Parameter(name = "maxGramSize", value = "20")})
})
最佳答案
老实说,minGramSize和maxGramSize之间的差异非常大。看来Elasticsearch会忽略您的设置并使用默认设置(1,2)。
nGramTokenizer的documentation表示存在最大允许差异。
根据index module documentation,此值默认为1。
因此,我怀疑Elasticsearch拒绝您提供的定义。您可以尝试在索引设置中设置index.max_ngram_diff
。
关于elasticsearch - Ngram不能像配置的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53068962/