我正在使用基于Lucene索引构建的Hibernate Search。如果针对数据库表创建索引,则返回结果的性能将很好。
我的问题是,一旦创建了索引,如果我们查询结果,Hibernate Search是否使用创建的索引从原始数据库表中获取结果?或者不需要访问数据库来获取结果?
谢谢!
答案 0 :(得分:5)
除非您使用Projections,否则索引仅用于标识与查询匹配的主键集,然后使用这些索引从数据库加载实体。
有很多很好的理由:
也就是说,如果您不需要完全管理的实体,可以使用Projections加载注释为Stored.YES的字段。一种常见的模式是使用投影提供匹配预览,然后当用户单击以获取详细信息以加载与该结果匹配的完整实体时。
答案 1 :(得分:1)
默认情况下,每次通过Hibernate插入,更新或删除对象时,Hibernate Search都会根据documentation更新相应的Lucene索引
因此,进一步搜索只会通过lucene索引生成数据。
另一个问题explaining索引如何运作