首页
/ Hibernate Search 技术文档

Hibernate Search 技术文档

2024-12-20 09:32:07作者:宣利权Counsellor

1. 安装指南

1.1 环境要求

  • Java 8 或更高版本
  • Maven 或 Gradle 构建工具
  • Hibernate ORM 5.4 或更高版本

1.2 Maven 依赖

pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.hibernate.search</groupId>
    <artifactId>hibernate-search-mapper-orm</artifactId>
    <version>7.2.2.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.search</groupId>
    <artifactId>hibernate-search-backend-lucene</artifactId>
    <version>7.2.2.Final</version>
</dependency>

1.3 Gradle 依赖

build.gradle 文件中添加以下依赖:

dependencies {
    implementation 'org.hibernate.search:hibernate-search-mapper-orm:7.2.2.Final'
    implementation 'org.hibernate.search:hibernate-search-backend-lucene:7.2.2.Final'
}

2. 项目的使用说明

2.1 配置文件

hibernate.cfg.xmlpersistence.xml 中添加 Hibernate Search 的配置:

<property name="hibernate.search.default.directory_provider" value="filesystem"/>
<property name="hibernate.search.default.indexBase" value="/path/to/indexes"/>

2.2 实体映射

使用注解或编程 API 将实体映射到索引字段。例如:

@Entity
@Indexed
public class Book {

    @Id
    @GeneratedValue
    private Integer id;

    @FullTextField
    private String title;

    @ManyToMany
    @IndexedEmbedded
    private Set<Author> authors = new HashSet<>();

    // Getters and setters
}

@Entity
public class Author {

    @Id
    @GeneratedValue
    private Integer id;

    @FullTextField
    private String name;

    @ManyToMany(mappedBy = "authors")
    private Set<Book> books = new HashSet<>();

    // Getters and setters
}

2.3 索引数据

使用 MassIndexer 索引现有数据:

SearchSession searchSession = Search.session(entityManager);
MassIndexer indexer = searchSession.massIndexer(Book.class);
indexer.startAndWait();

2.4 搜索数据

使用 Search DSL 构建全文搜索查询:

SearchResult<Book> result = Search.session(entityManager)
        .search(Book.class)
        .where(f -> f.match()
                .fields("title", "authors.name")
                .matching("Isaac"))
        .fetch(20);

List<Book> hits = result.hits();
long totalHitCount = result.total().hitCount();

3. 项目API使用文档

3.1 SearchSession API

SearchSession 是 Hibernate Search 的核心接口,用于执行搜索操作。

SearchSession searchSession = Search.session(entityManager);

3.2 MassIndexer API

MassIndexer 用于批量索引数据库中的所有实体。

MassIndexer indexer = searchSession.massIndexer(Book.class);
indexer.startAndWait();

3.3 Search DSL API

Search DSL 提供了丰富的查询构建功能,支持多种查询类型和排序方式。

SearchResult<Book> result = searchSession.search(Book.class)
        .where(f -> f.match()
                .fields("title", "authors.name")
                .matching("Isaac"))
        .fetch(20);

4. 项目安装方式

4.1 Maven 安装

通过 Maven 安装 Hibernate Search,只需在 pom.xml 中添加相应的依赖。

4.2 Gradle 安装

通过 Gradle 安装 Hibernate Search,只需在 build.gradle 中添加相应的依赖。

4.3 手动安装

可以从 SourceForge 下载 Hibernate Search 的发布包,并手动集成到项目中。

通过以上步骤,您可以成功安装并使用 Hibernate Search 进行全文搜索。

登录后查看全文

项目优选

收起
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
465
kernelkernel
deepin linux kernel
C
32
16
atomcodeatomcode
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
Rust
2.09 K
218
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
700
1.4 K
docsdocs
暂无描述
Dockerfile
780
5.08 K
pytorchpytorch
Ascend Extension for PyTorch
Python
758
968
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.04 K
271
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
880
2.03 K
mindquantummindquantum
MindQuantum is a general software library supporting the development of applications for quantum computation.
Python
183
111
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.11 K
682