初识Lucene 4.5全文搜索
近期想研究下lucene,但网络上的教程大多都是lucne 3.x版本的讲解。可是lucene版本的更新速度快的惊人,目前已经到了4.8版了,只好去查阅官方文档。虽然英文不大好,但稍微对比了下发现3.x版本至4.x版本的修改非常之大。接下来我就以4.5版来操作,分享下我对luence的初步认识。
此图很形象的描述了lucene的基本流程,简而言之就是:1、创建索引;2、检索索引。
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------
太深的道理与原理我目前也还是一知半解,所以就以小白的思维来阐述。
Lucene与数据库有许多相通之处,以下我们做个简单对比:
数据库 | Luecene | |
基本概念 | 列/字段 | Field |
行/记录 | Document | |
基本操作 | 查询(SELECT) | Searcher |
添加(INSERT) | IndexWriter. addDocument | |
删除(DELETE) | IndexReader.delete | |
修改(UPDATE) | 不支持(可删除后重新添加) |
上面的表格式某位网友博文里的对比,我觉得挺好理解的。可以这么去认为吧,lucene把你数据库里的数据做了个索引,以后你要全文查找某数据时就可以从索引中查找,就好比字典的索引目录!
废话说了一大堆,还是用代码来说话,首先要往代码里导入三个包:
lucene-analyzers-common-4.5.0、lucene-core-4.5.0、lucene-queryparser-4.5.0
要有面向对象的思维嘛,先创建一个javabean:luceneBeans,用来存放你所要的数据
package pojo;
public class LuceneBeans {
private String id;
private String title;
private String introduce;
private String addtime;
private String category;
public LuceneBeans() {
super();
}
public LuceneBeans(String id, String title, String introduce,
String addtime, String category) {
super();
this.id = id;
this.title = title;
this.introduce = introduce;
this.addtime = addtime;
this.category = category;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}
public String getAddtime() {
return addtime;
}
public void setAddtime(String addtime) {
this.addtime = addtime;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
}