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

升级Hibernate Search至5.9.3.Final时依赖与API报错求助

解决方案:Hibernate Search 5.9.3.Final 升级后的依赖与API适配

1. 依赖调整:替换Solr分析器为Lucene分析器

Hibernate Search 5.x不再依赖Solr的solr-core,而是直接使用Lucene的分析器组件。你需要移除solr-core v3.1.0依赖,添加Hibernate Search配套的Lucene分析器依赖即可:

如果用Maven,添加以下依赖:

<!-- Hibernate Search ORM核心依赖 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search-orm</artifactId>
    <version>5.9.3.Final</version>
</dependency>
<!-- 内置适配好的Lucene分析器模块 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search-analyzers</artifactId>
    <version>5.9.3.Final</version>
</dependency>

该模块会自动管理配套的Lucene版本,无需单独引入Lucene核心包。

2. 代码API适配

(1)替换分词器类导入

原Solr分词器类已被Lucene对应类取代,修改导入语句:

// 替换旧的Solr分词器导入
import org.apache.lucene.analysis.standard.StandardTokenizerFactory;

(2)替换Index.UN_TOKENIZED

Hibernate Search 5.x中Index.UN_TOKENIZED已被移除,要实现“不分词直接索引”的效果,修改@Field注解:

// 替换旧的@Field注解
@Field(index = Index.YES, analyze = Analyze.NO, store = Store.YES)

Analyze.NO等价于旧版本的UN_TOKENIZED,表示不对字段内容做分词处理。

(3)修正@AnalyzerDef定义

确保分词器工厂使用Lucene类后,注解结构保持不变即可:

@AnalyzerDef(tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class), name = "en")

版本一致性验证

确保Hibernate相关依赖版本统一:

  • hibernate-search-orm 5.9.3.Final
  • hibernate-entitymanager 5.2.17.Final(与你当前使用版本一致,无需调整)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:42:53