Hibernate SearchHibernate搜索框架
Hibernate Search 的作用是对数据库中的数据进行检索的。它是 hibernate 对著名的全文检索系统 Lucene 的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为 text 的字段)建立全文索引,这样通过 hibernate search 就可以对这些字段进行全文检索后获得相应的 POJO,从而加快了对内容庞大字段进行模糊搜索的速度(sql 语句中 like 匹配)。
Hibernate Search 自动从 Hibernate ORM 实体中提取数据,以将其推送到本地 Apache Lucene 索引或远程 Elasticsearch 索引。
Hibernate Search主要有以下功能特点:
- 通过注释或 programmatic API 将实体属性声明性映射到索引字段。
- 数据库中所有实体的按需大量索引,以使用预先存在的数据初始化索引。
- 通过 Hibernate ORM 会话修改实体的即时自动索引 ,以始终保持索引最新。
- 一种搜索 DSL ,可轻松构建全文搜索查询并将命中结果检索为 Hibernate ORM 实体。
- 还有更多:分析器的配置、 搜索 DSL 中的许多不同谓词和排序、空间支持。搜索查询返回 projections 而不是 entities、聚合、使用桥接的高级自定义映射...
@Entity // This entity is mapped to an index @Indexed public class Book { // The entity ID is the document ID @Id @GeneratedValue private Integer id; // This property is mapped to a document field @FullTextField private String title; @ManyToMany // Authors will be embedded in Book documents @IndexedEmbedded private Set<Author> authors = new HashSet<>(); // Getters and setters // ... } @Entity public class Author { @Id @GeneratedValue private Integer id; // This property is mapped to a document field @FullTextField private String name; @ManyToMany(mappedBy = "authors") private Set<Book> books = new HashSet<>(); // Getters and setters // ... }
评论