Hibernate与Lucene集成

1. 注解领域模型

首先,必须将一个持久类声明为 @Indexed:

@Entity
@Indexed(index="indexes/essays")
public class Essay {
    ...
}

属性index是告诉Hibernate, Lucene索引信息所在的位置(你文件系统的某个目录)。 如果你想为所有的Lucene索引定义一个根目录,你可以在配置文件中用属性hibernate.lucene.index_dir进行配置。

Lucene索引包括四种字段:keyword 字段,text 字段,unstored字段和unindexed字段。 Hibernate注解提供了将实体属性标记为前三种被索引字段的注解。

@Entity
@Indexed(index="indexes/essays")
public class Essay {
    ...

    @Id
    @Keyword(id=true)
    public Long getId() { return id; }
    
    @Text(name="Abstract")
    public String getSummary() { return summary; }
    
    @Lob
    @Unstored
    public String getText() { return text; }
    
}

这些注解定义了一个带有三个字段的索引: Id, AbstractText.

注意:你必须在你的实体类的标志属性上指定 @Keyword(id=true) .

用于对元素建立索引的分析器类是可以通过hibernate.lucene.analyzer属性进行配置的。 如果没有定义,则把 org.apache.lucene.analysis.standard.StandardAnalyzer作为缺省。

2. 启用自动索引

我们激活用于帧听三类Hibernate事件的 LuceneEventListener, 这些事件会在变更被提交至数据库后产生。

<hibernate-configuration>
    ...
    <event type="post-commit-update" 
        <listener  
            class="org.hibernate.lucene.event.LuceneEventListener"/>
    </event>
    <event type="post-commit-insert" 
        <listener 
            class="org.hibernate.lucene.event.LuceneEventListener"/>
    </event>
    <event type="post-commit-delete" 
        <listener 
            class="org.hibernate.lucene.event.LuceneEventListener"/>
    </event>
</hibernate-configuration>
 本文摘于:http://www.hibernate.org/hib_docs/annotations/reference/zh_cn/html_single/#lucene
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值