我过去使用过 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/