website icon
会一些前端,懂一些后端,做过几年管理,弄过一些运维,搞过一些互联网开源项目,没错,我是一个爱开源爱折腾的团队万能胶!

初识Hibernate Search

初识Hibernate Search 要让你的应用具备Hibernate Search赋予的全文搜索的能力,需要做以下三件事: 给项目添加必要的依赖和配置信息 给你的实体类添加必要的信息,从而让Lucene知道如何对它们进行索引(Indexing) 在需要的地方使用符合Hibernate Search规范的查询来完成业务逻辑 对于需要添加的依赖信息,会在以后进行介绍。我们首先来看看代码该如何写。 我们会使用一个类似于经典的“Java Pet Store”那样的 Web应用来展示Hibernate Search的使用方式,这个应用的主要功能是展示一个软件应用的目录。 创建实体类 既然目的是为了展
代码 4年前 0 145 0

Hibernate Search(2) 实体类型的映射

实体类型映射 在上一篇文章中,简要介绍了如何使用Hibernate Search来对一个实体进行全文搜索。 然而,在真实的应用中,实体与实体之间的关系也许更为复杂。为了对复杂实体进行搜索,就需要让底层的Lucene查询也能够理解这些关系。 下图反映了Database,Hibernate,Hibernate Search和Lucene之间的关系: 域映射选项(Field Mapping Options) 我们已经知道@Field注解用来让某个域可以被全文搜索到。 实际上,在添加该注解后,Hibernate Search会将一些有意义的默认设置添加到相应的Lucene索引中。 这些被添加的默认设置
代码 4年前 1 524 0

Hibernate Search (3) 基础查询

基础查询 目前我们只用到了基于关键字的查询,实际上Hibenrate Search DSL还提供了其它的查询方式,下面我们就来一探究竟。 映射API和查询API 对于映射API,我们可以通过使用Hibernate提供的注解来完成映射工作,同时我们也可以使用JPA提供的注解来完成。类似的,对于查询API,我们也可以从Hibernate和JPA提供的查询API中进行选择。每种方式都有它的优点和缺点,比如当我们使用Hibernate提供的查询API时,意味着可以使用更多的特性,毕竟Hibernate Search就是建立在Hibernate之上的。而当我们选择JPA的查询API时,意味着应用可以更方
代码 4年前 0 208 0

Hibernate Search (4) 实体类型的高级映射功能

高级映射 前面介绍的可搜索的域基本上都是字符串类型,实际上可搜索的类型是非常丰富的。 本文会介绍以下几个方面的内容: Lucene对实体进行索引的过程 借助Solr组件对这个过程的改进 修改域的重要程度,从而让基于相关度的排序更加有意义 动态决定是否对一个实体类型进行索引 桥接器(Bridges) 实体类型中可以使用的类型是无穷无尽的,但是对于Lucene索引而言,任何类型归根到底都会以字符串来表示。所以,在对实体的域进行索引时,这些域最终需要被转换为字符串类型的对象。 在Hibernate Search的术语中,这个过程叫做桥接,而实现这个过程的对象就被称为桥接器。在Hibernate Se
代码 4年前 0 216 0

Hibernate Search (5) 解析和条件索引

解析(Analysis) 当一个实体域被Lucene索引时,往往还会经历一个语法分析(Parsing)和转换(Conversion)的步骤,这些步骤被称为解析。在前文中,我们提到过Hibernate Search会默认对字符串类型的实体域进行分词,而这个分词过程就需要用到解析器(Analyzer)。在需要对实体域进行排序的场合,需要禁用这个默认的分词行为。 在解析过程中,还可以借助Apache Solr提供的组件来完成更多的操作。为了弄清楚Solr组件是如何参与到这个过程中并完成更多的操作,需要首先明白Lucene在进行解析时经理的三个步骤: 字符过滤(Character Filtering)
代码 4年前 0 170 0

Hibernate Search (6) 高级查询过滤投影和分面

高级查询 在介绍了更多的高级映射功能之后,是时候回顾一下之前介绍过的查询功能了,看看如何借助这些高级的映射功能来使用一些高级的查询功能。本文会通过以下几个方面进行介绍: 如何在不和数据库进行任何交互的前提下,借助Lucene的力量来动态的筛选结果 如何通过使用基于投影(Projection)的查询来获取需要的属性,从而避免与数据库的交互 如何使用分面搜索(Faceted Search)对搜索结果进行划分 如何使用查询时提升(Boosting) 如何给查询设置时间限制 过滤(Filtering) 虽然是全文搜索,但是我们有时候需要将搜索的结果限定到某个范围内。比如,当我们只需要搜索特定设备上的支
代码 4年前 0 263 0
文章
分类
标签
评论
 访问 111315次