HibernateSearch的作用是对数据库中的数据进行检索的。它是 hibernate 对著名的全文检索系统 Lucene 的一个集成方案,作用在于对数据表中某些内容庞大的字段(如声明为text的字段)建立全文索引,这样通过hibernatesearch就可以对这些字段进行全文检索后获得相应的POJO,从而加快了对内容庞大字段进行模糊搜索的速度(sql语句中like匹配)。
HibernateSearch自动从HibernateORM实体中提取数据,以将其推送到本地ApacheLucene索引或远程Elasticsearch索引。
HibernateSearch主要有以下功能特点:
通过注释或 programmaticAPI将实体属性声明性映射到索引字段。数据库中所有实体的按需大量索引,以使用预先存在的数据初始化索引。通过HibernateORM会话修改实体的即时自动索引 ,以始终保持索引最新。一种搜索DSL ,可轻松构建全文搜索查询并将命中结果检索为HibernateORM实体。还有更多:分析器的配置、搜索DSL中的许多不同谓词和排序、空间支持。搜索查询返回 projections而不是entities、聚合、使用桥接的高级自定义映射...@Entity//Thisentityismappedtoanindex@IndexedpublicclassBook{//TheentityIDisthedocumentID@Id@GeneratedValueprivateIntegerid;//Thispropertyismappedtoadocumentfield@FullTextFieldprivateStringtitle;@ManyToMany//AuthorswillbeembeddedinBookdocuments@IndexedEmbeddedprivateSet<Author>authors=newHashSet<>();//Gettersandsetters//...}@EntitypublicclassAuthor{@Id@GeneratedValueprivateIntegerid;//Thispropertyismappedtoadocumentfield@FullTextFieldprivateStringname;@ManyToMany(mappedBy="authors")privateSet<Book>books=newHashSet<>();//Gettersandsetters//...}
评论