在项目中的lucene与hibernate 3.2.5集成配置

hibernate3.2以后,好像对lucene集成这一块多了一个项目hibernate-search,现有网上中文的配置,与这个有点出入。

现将我的配置过程记录如下:

spring中配置:

在sessionFactory的配置中加上

    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
    <property name="configLocation" value="classpath:config/hibernate.cfg.xml"/>
hibernate.cfg.xml配置:

<hibernate-configuration>
  <session-factory name="sessionFactory">
    <property name="hibernate.search.default.indexBase">/home/steven/workspace/syn-webshop/indexDir</property><!--索引存放的路径-->
    <property name="hibernate.search.default.directory_provider">org.hibernate.search.store.FSDirectoryProvider</property>
    <event type="post-update"><listener class="com.synjones.webshop.event.ProductLuceneEventListener"/></event>
    <event type="post-insert"><listener class="com.synjones.webshop.event.ProductLuceneEventListener"/></event>
    <event type="post-delete"><listener class="com.synjones.webshop.event.ProductLuceneEventListener"/></event>
  </session-factory>
</hibernate-configuration>

在domain的类前,

@Indexed(Index/Products)

主键加上

@DocumentId

需要索引的字段前加@Field(index=Index.TOKENIZED, store=Store.NO)

hibernate通过上面定义的listener,当要被索引的字段增删改的时候,会相应创建删除索引,有的时候,你可能不会真的删除数据库的数据,而是做了一个删除的标记,这个时候,需要重载一下定义的listener,注意,重载只有在3.0.1GA以上版本才行,因为这个版本的里面的一些方法的字段是private,在3.0.1.GA后是protected

或者自己实现PostUpdateEventListener, Initializable,接口,在配置的时候,写上自己的listener就行.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值