1

我过去使用过 Hibernate,我和很多人一样对使用 ORM 感到沮丧。由于传统数据库是关系型数据库,因此任何 ORM 都有一个泄漏的抽象。我的大部分时间最终都用于了解抽象的细节,因此我可以获得良好的性能。

然而,Hibernate Search 在 Lucene 之上工作。由于 Lucene 包含相同类型的文档集合,它可能不会像 Hibernate 使用关系数据库那样存在相同的问题。Hibernate Search 是否提供了干净的抽象,或者 Hibernate Search 是否存在与 Hibernate+MySQL 相同的问题?

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

4

1 回答 1

2

一个好的抽象是一种抽象,它解决了底层库没有解决的问题,而对特性集没有或很少妥协。对于 Lucene,这些问题可能是:

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

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

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

  • 如果你想去分布式,那么 Solr 或 Elastic Search 会帮助你很多。

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

于 2012-04-06T10:24:02.247 回答