使用带注释的Hibernate配置Compass

时间:2008-11-04 13:41:08

标签: java hibernate spring lucene compass-lucene

我正在将Hibernate用于基于Java的Web应用程序,并希望通过Compass添加全文搜索。指南针应该支持,但没有提供任何有用的入门指南。

我可以弄清楚我必须使用@Searchable和各种@SearchableXXX变体来注释我的实体,并通过HibernateHelper.getCompass(s​​essionFactory)在我的服务代码中访问Compass。

我最终得到一个HibernateException,说“没有配置Compass事件监听器,请查看参考文档和应用程序的hibernate.cfg.xml”。

reference documentation再次提示和hibernate.cfg.xml,而我使用Spring的AnnotationSessionFactoryBean配置Hibernate。对于这种情况,文档提到:“如果使用Hibernate Annotations或Hibernate EntityManager(JPA),只需将Compass jar文件删除到类路径就可以启用它(确保在类路径中没有Hibernate Search,因为它使用了相同的事件类名称。)“这对我不起作用。

我缺少什么想法或者是一个很好的入门资源?

3 个答案:

答案 0 :(得分:1)

我想知道为什么你选择Compass去Hibernate。我们查看了Compass和Hibernate-Search,我们选择了后者,因为它具有出色的集成。

您可以使用与使用HQL或Critera执行SQL数据库完全相同的方式查询测试索引。

如果您使用的是iBatis或JDBC,那么Compass当然会更合适。 Hibernate搜索更适合JTA。

是我还是指南针明显缺乏活动?

答案 1 :(得分:0)

要检查的最佳资源是检查随罗盘分布提供的petclinic示例(具有依赖性)。如果默认情况下未配置侦听器,则必须设置EventListener。

答案 2 :(得分:0)

Compass有两种模式可以与Hibernate集成。嵌入式模式基本上意味着您需要将Compass jar放入应用程序(并且可能需要配置事件监听器,具体取决于Hibernate版本),然后您至少需要在配置Compass的Hibernate cfg文件中的属性配置中索引位置。这是link link for more information

另一个选择是通过创建CompassGps和Hibernate设备(使用Hibernate SessionFactory初始化)将Compass配置为与外部Hibernate集成。 Hibernate设备将使用Hibernate自动注册相关的监听器。可以找到更多信息link here