elasticsearch - Ngram不能像配置的那样工作

标签 elasticsearch hibernate-search

我正在使用休眠搜索注释,但是也有一个Elasticsearch实现。我的 token 生成器未根据其配置拆分。我特别希望该字符串至少被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")})
})

最佳答案

老实说,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/

相关文章:

java - 如何配置hibernate search 5.9工作线程池大小

java - 使用 MongoDB 实现用于 hibernate 搜索的目录提供程序

elasticsearch - spring boot + hibernate search + elastic search内嵌启动失败

elasticsearch - Elastalert 默认安装位置

elasticsearch - Logstash和ElasticSearch之间的数据丢失

elasticsearch - ElasticSearch中唯一嵌套文档的数量

java - Hibernate-Search - 使用 lucene 查询解析器语法进行不区分大小写的通配符搜索(不使用 QueryBuilder!)

elasticsearch - 在 ElasticSearch 的 1000 万个文档中添加新字段

java - 授予 Elasticsearch 访问 Java 的适当权限

java - 将两个 TokenStream 流添加在一起(ASCIIFoldingFilter 案例)