Ngram不能像配置的那样工作

时间:2018-10-30 16:32:35

标签: elasticsearch hibernate-search

我正在使用休眠搜索注释,但是也有一个Elasticsearch实现。我的令牌生成器未根据其配置拆分。我特别希望该字符串至少被3个字符分隔。但是它忽略了我的配置,并继续将enter image description here拆分为最少一个。我在做什么错了?

@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")})
})

1 个答案:

答案 0 :(得分:1)

老实说,您在minGramSize和maxGramSize之间的差异非常大。看来Elasticsearch会忽略您的设置并使用默认设置(1,2)。

nGramTokenizer的documentation表示存在最大允许差异。

根据index module documentation,此值默认为1。

我怀疑Elasticsearch会因此拒绝您提供的定义。您可以尝试在索引设置中设置index.max_ngram_diff