您的位置:首页 > 运维架构 > Linux

Hibernate Search 和 Lucene 的快速介绍 转载自linux公社

2017-03-17 12:10 204 查看
http://www.linuxidc.com/Linux/2015-11/125538.htm

1. 该示例是基于Hibernate Search 4.3.0-------》hibernate5 更新新特性

这篇博客的目的是演示如何用Hinernate Search来让Hibernate管理的实体可查询和如何用Lucene索引来查询。这个演示只是告诉你在基于Hibernate的应用中添加查询功能是个很简单的事。其实Lucene还有很多东西需要了解,例如Text Tonkenizers 和 analyzers 的工作原理到底是啥。并且Lucene和Hibernate Search组合还能干好多牛逼活,我的这片博客仅仅说了个皮毛而已。如果这片文章引起你的注意了,我希望你关注Lucene和Hinernate
Search 项目和其项目网站。

Hibernate Search的注解:

@Indexed: 标明这个实体需要被Lucene创建索引,从而使之可以被检索
@Analyzer: 告诉Hibernate Search来标记它的域以及更新Lucene索引的时候使用哪个Lucene分析器。注意:你以后检索的时候,使用一个与Lucene为你将要检索的文件创建索引的时候使用的分析器相同的分析器是非常重要的。然后使用一个不同的分析器可能也会返回我们想要的结果,但是这得不到保证,所以,总是先研究你选择的用来创建索引和检索的分析器,然后再做出明智的选择。
@DocumentId:标明Car的id字段应该被用作Lucene索引中文档的ID,这几乎总是和数据库中实体的主键是同一个字段。
@Field: 告诉Hibernate Search为该字段创建爱你索引,并且提供一些其他信息,比如该字段在索引中需要被如何处置。
@Entity
@Indexed
@Analyzer(impl = org.apache.lucene.analysis.standard.StandardAnalyzer.class)
public class Car {

@Id
@GeneratedValue
@DocumentId
private Long id;

@Column
@Field(store = Store.YES)
private String make;

@Column
@Field(store = Store.YES)
private String model;

@Column
@Field(store = Store.YES)
private short year;

@Column
@Field(store = Store.NO)
private String description;

public Car() {
}

public Car(String make, String model, short year, String description) {
super();
this.make = make;
this.model = model;
this.year = year;
this.description = description;
}

public String getMake() {
return make;
}
// more getters/setters
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: