You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Hibernate Search实体中使用内置WhitespaceAnalyzer

Hibernate Search内置WhitespaceAnalyzer引用错误解决方法

问题根源

你碰到的HSEARCH000353错误,本质是分析器名称引用错误。Hibernate Search的内置分析器不用类名(比如WhitespaceAnalyzer)来引用,而是采用小写短名称,这里正确的名称是whitespace。

修正后的字段配置

直接修改@FullTextField的analyzer参数即可,完全不需要在application.properties中额外定义内置分析器:

@FullTextField(analyzer = "whitespace", projectable = Projectable.YES, termVector = TermVector.NO)
@Column(name = "MY_FIELD")
private String myField;

针对你的核心需求补充说明

你的字段值格式为1#J, 2#J, 3#N,使用whitespace分析器时,会按空格拆分出1#J,、2#J,、3#N这几个词条。如果不想保留词条末尾的逗号,可以自定义一个带符号清理规则的分析器:

方式1:注解配置自定义分析器

@AnalyzerDef(name = "whitespace_clean",
    tokenizer = @TokenizerDef(factory = WhitespaceTokenizerFactory.class),
    filters = {
        @TokenFilterDef(factory = PatternReplaceFilterFactory.class,
            params = {
                @Parameter(name = "pattern", value = ","),
                @Parameter(name = "replacement", value = ""),
                @Parameter(name = "replace", value = "all")
            })
    }
)

// 字段上引用这个自定义分析器
@FullTextField(analyzer = "whitespace_clean", projectable = Projectable.YES, termVector = TermVector.NO)
@Column(name = "MY_FIELD")
private String myField;

方式2:配置文件定义(Spring Boot环境)

先在application.properties指定分析器配置文件路径:

hibernate.search.backend.analysis.configurer=classpath:analysis-config.json

然后创建src/main/resources/analysis-config.json文件:

{
  "analyzers": {
    "whitespace_clean": {
      "tokenizer": "whitespace",
      "filters": [
        {
          "type": "pattern_replace",
          "pattern": ",",
          "replacement": ""
        }
      ]
    }
  }
}

之后字段上同样引用analyzer = "whitespace_clean"即可。

内容的提问来源于stack exchange,提问作者kostas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:03:33