我正在使用休眠搜索注释,但是也有一个Elasticsearch实现。我的令牌生成器未根据其配置拆分。我特别希望该字符串至少被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")})
})
答案 0 :(得分:1)
老实说,您在minGramSize和maxGramSize之间的差异非常大。看来Elasticsearch会忽略您的设置并使用默认设置(1,2)。
nGramTokenizer的documentation表示存在最大允许差异。
根据index module documentation,此值默认为1。
我怀疑Elasticsearch会因此拒绝您提供的定义。您可以尝试在索引设置中设置index.max_ngram_diff
。