【大咖分享】AI 大模型时代,架构师有哪些机遇和挑战? 了解详情
写点什么

Hibernate Search:全文检索你的领域模型

  • 2007-06-26
  • 本文字数:1244 字

    阅读完需:约 4 分钟

Hibernate Search 项目的 Beta 第二版刚刚发布。InfoQ 为此采访了Hibernate Search 项目的发起人 Emmanuel Bernard 以了解更多细节,Emmanuel 同时也是相关项目 Hibernate Annotations Hibernate EntityManager 的发起人。根据 Emmanuel 所言,Hibernate Search 目的是帮助 Hibernate 的使用者或是 Java Persistence API (JPA)的使用者可以通过全文搜索索引来访问 Hibernate 或 JPA 管理的对象。Hibernate Search 项目的主要特性包含以下几个方面:

  • Lucene 集成——作为强大高效的检索引擎, Lucene 的美名早已久经考验了;
  • 数据的自动插入和更新——当一个对象通过 Hibernate 添加或更新时,索引也会相应进行透明的更新;
  • 支持众多复杂的搜索方式——可快速的使用通配符进行搜索,以及多关键词全文检索(multi-word text searches)和近似或同义词搜索(approximation/synonym searches),或根据相关性排列搜索结果;
  • 搜索集群(Search Clustering)——Hibernate Search 提供了内建搜索集群解决方案,其中包括一个基于 JMS 的异步查询和索引系统;
  • 对 Lucene API 接口的直接调用——如果用户打算处理某些特别复杂的问题,可以在查询中直接使用 Lucene 提供的 API 接口;
  • 对 Lucene 的自动管理——Hibernate Search 可以管理并优化 Lucene 的索引,并且非常高效地使用 Lucene 的 API 接口。

项目的主要目标包含以下几个方面:

  • 易用性——和 Hibernate 的 ORM 映射一样,Hibernate Search 帮助用户实现了业务 90% 的工作,并且使用户专注于余下更为困难的业务实现部分;
  • 和已有的 Hibernate/JPA 编程模型保持一致性——更轻松地集成 Hibernate/JPA 编程模型是“一开始就致力要实现的目标”。

Emmanuel 在实践中给出了几个具体的实例,包括:

  • 通过转换对象构造的方式,HQL 查询语句可以被转换为搜索查询,“通常只是几行代码”——其他的因素(执行查询,结果格式等)都保持不变;
  • 不需要启动过程,因为 Hibernate Search 透明地利用了已有的 Hibernate/JPA 基础架构;
  • 最小配置集合要求至少在persistence.xml或者hibernate.cfg.xml中设置两个属性。

关于最终发布时间表,Emmanuel 指出 3.0 版本发布之前将在查询和索引最优化方面做出大量的工作,他就此总结道:

Hibernate Search 的核心代码实际上是相当稳定的,发布版之所以仍标记为 Beta 的原因是我们对拓展 API 接口还没有充足的把握,Hibernate Search 内核相当灵活,并且可以融入用户自定制的搜索策略。到目前为止,代码已经相对稳定,我们希望看到一个具备完善特性的产品,并保证 API 接口不会出现问题。 如同平常一样,开源项目在编码完成时发布,我所要说的就是这个夏天很长并且我没有安排什么额外的度假计划 :)

关于 Hibernate Search 实现策略好处和不足的有趣争论也随之展开, Sanjiv Jivan 就此描述了他眼中的Hibernate Search 优缺点,随后Emmanuel Bernard 也回应了Sanjiv 的看法。那么,亲爱的读者,对于Hibernate Search,您的观点又是如何呢?

查看英文原文: Hibernate Search: Indexed Full Text Search of your Domain Model

2007-06-26 04:302018
用户头像

发布了 74 篇内容, 共 11.2 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

数据资产管理

奔向架构师

数据资产 数据管理 6月月更

AWS的运营管理类服务

冯亮

云计算 AWS

接口测试(apipost、jmeter和python脚本)——测试工具

Xd

Java 后端 接口测试

Larix真正的去中心化借贷平台,并开启double Mining活动

鳄鱼视界

统一日志

卢卡多多

日志 6月月更

Any to Any 实时变声的实现与落地丨RTC Dev Meetup

声网

音频 RTC Dev Meetup 生态专栏 语音处理

攻防演练中红队的内网横向扩展

穿过生命散发芬芳

6月月更 攻防演练

【网络进阶】网络问题排查实例集锦(实战经验分享)

dvlinker

Linux 服务器 网络知识 网络进阶

linux之我常用的20条命令( 之三)

入门小站

Linux

军体拳代码

秋名山码民

6月月更

Java Core 「13」ReentrantReadWriteLock 再探析

Samson

学习笔记 Java core 6月月更

数据库每日一题---第18天:每天的领导和合伙人

知心宝贝

数据库 大数据 前端 后端 6月月更

vue导航路由

小恺

6月月更

uni-app进阶之创建组件/原生渲染【day9】

恒山其若陋兮

6月月更

Hoo虎符研究院 | 币圈后浪D/Bond一个基于ERC-3475标准开发的去中心化债券生态系统平台

区块链前沿News

Hoo 虎符交易所

透过华为军团看科技之变(四):互动媒体(音乐)

脑极体

在线JSON转YAML工具

入门小站

工具

Discourse 新用户可插入媒体的数量

HoneyMoose

深挖数据价值,2022隐私计算大赛开启!

Jessica@数牍

隐私计算 大数据技能大赛 隐匿查询性能优化 隐私求交性能优化

百度安全再次亮相高性能计算国际顶会SC 2022 — 采用Fuzzing技术防护高性能计算静默数据损坏安全风险

百度安全

百度安全 百度安全实验室 高性能计算国际顶会 SC 2022 Fuzzing技术防护

一问带你彻底了解JVM-Java虚拟机内存区域详解

派大星

JVM

新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!

阿里巴巴云原生

阿里云 云原生 容器服务

小红书严打买卖账号及刷量作弊行为:必须维护平台的公信力

石头IT视角

Android 修改系统音量及监听

yechaoa

android 6月月更 AudioManager

leetcode 221. Maximal Square 最大正方形(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

在线文本列表批量添加行号工具

入门小站

工具

K8S学习笔记--《开篇词|迎难而上,做云原生时代的弄潮儿》

IT蜗壳-Tango

容器 k8s IT蜗壳教学 6月月更

【网络入门】详解常用的基础网络知识(面试常考内容)

dvlinker

网络知识 TCP与UDP 心跳机制与丢包重传 网络命令 抓包分析

服务治理的工作内容

阿泽🧸

微服务 6月月更

JVM调优简要思想及简单案例-新生代回收算法

zarmnosaj

6月月更

C语言数据的储存

未见花闻

6月月更

  • 扫码加入 InfoQ 开发者交流群
Hibernate Search:全文检索你的领域模型_Java_Ryan Slobojan_InfoQ精选文章