我过去使用过Hibernate,并且很多人都对使用ORM感到沮丧。由于传统数据库是关系型的,因此任何ORM都具有漏洞抽象。我的大部分时间最终被用来理解抽象的细节,所以我可以获得良好的表现。
然而,Hibernate Search在Lucene之上运行。由于Lucene包含相同类型的文档集合,因此它可能与Hibernate与关系数据库的问题不同。 Hibernate Search是否提供了一个干净的抽象,或者Hibernate Search是否充满了与Hibernate + MySQL相同的问题?
我正在考虑从原始Lucene中的现有实现转移到Hibernate Search。
答案 0 :(得分:2)
一个好的抽象是一种抽象,它解决了底层库无法解决的问题,在功能集上没有或几乎没有妥协。对于Lucene,这些问题可能是:
然后,最好的抽象取决于你需要解决的这个问题:
如果您只想在单个服务器上构建反向索引并进行查询,请坚持使用简单的Lucene。 Lucene已经是最好的抽象。任何其他抽象都会增加开销,但可能会阻止您使用某些功能而不会使事情变得更容易。
如果你想分发,那么Solr或Elastic Search会对你有所帮助。
如果您想将全文功能与其他持久数据集集成,那么Hibernate Search或Compass可能是有趣的候选者。