java - Hibernate Search 是 Lucene 的干净抽象吗?

标签 java hibernate lucene hibernate-search

我过去使用过 Hibernate,并且我和许多人一样对使用 ORM 感到沮丧。由于传统数据库是关系型的,任何 ORM 都存在抽象漏洞。我的大部分时间最终都花在了理解抽象的细节上,这样我才能获得良好的性能。

然而,Hibernate Search 在 Lucene 之上运行。由于 Lucene 包含相同类型文档的集合,因此它可能不会出现与关系数据库的 Hibernate 相同的问题。 Hibernate Search 是否提供了干净的抽象,或者 Hibernate Search 是否充满了与 Hibernate+MySQL 相同的问题?

我正在考虑从原始 Lucene 中的现有实现迁移到 Hibernate Search。

最佳答案

好的抽象是解决底层库 Unresolved 问题的抽象,并且对功能集没有或几乎没有妥协。对于 Lucene,这些问题可能是:

  • 指数分布,
  • 与另一个持久数据源同步,
  • ...

那么,最好的抽象取决于你需要解决的这个问题:

  • 如果您只是希望能够在单个服务器上构建反向索引并对其进行查询,那么请坚持使用普通 Lucene。 Lucene 已经是最好的可用抽象。任何其他抽象都会增加开销,同时可能会阻止您使用某些功能并且不会让事情变得更容易。

  • 如果您想要分布式,那么 Solr 或 Elastic Search 会对您有很大帮助。

  • 如果您想将全文功能与另一个持久数据集集成,那么 Hibernate Search 或 Compass 可能是有趣的选择。

关于java - Hibernate Search 是 Lucene 的干净抽象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10032080/

相关文章:

powershell - Solr 7.3.1 不会启动 "SSL_PORT_PROP"此时是意外的

java - JNI(Java 和 C++)在 Ubuntu 11.10 上使用 Eclipse

java - Hibernate 实体更新现有行而不是使用 saveAndFlush 创建新行

java - 为什么在 Dao 设计模式或其他设计模式中使用接口(interface)

java - Neo4j 未启动

java - org.apache.lucene.store.LockObtainFailedException : Lock obtain timed out: NativeFSLock@/var/database/schema/label/lucene/write. 锁

java - 当调用类的任何方法时中断

java - REST/Java 的良好实践

java - jsf - 在 faces-config 中注册 SessionListener

java - Spring Boot - 批量更新单独插入记录而不是批量插入记录