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