LUCENE3.0 自学吧 3 由lucene demo引出的思考

 org.apache.lucene.demo.IndexFiles 类中,使用递归的方式去索引文件 。在构造了一个IndexWriter索引器之后 ,就可以向索引器中添加Doucument 了,执行真正地建立索引的过程。遍历每个目录,因为每个目录中可能还存在目录,进行深度遍历,采用递归技术找到处于叶节点处的文件(普通的具有扩展名的文件,比如my.txt文件),然后调用如下代码中:


上面这一句:

writer.addDocument(FileDocument.Document(file));

其实做了很多工作。每当递归到叶子节点,获得一个文件,而非目录文件,比如文件myWorld.txt。然后对这个文件进行了复杂的操作

先根据由myWorld.txt构造的File对象f,通过f获取myWorld.txt的具体信息,比如存储路径、修改时间等等,构造多个Field对象,再由这些不同Field的聚合,构建出一个Document对象 ,最后把Document对象加入索引器IndexWriter对象中 ,通过索引器可以 这些聚合的Document Field中信息进行分词、过滤处理 ,方便检索。

通过上面的代码,可以看出Field是何其的重要,必须把Field完全掌握了。

Field类定义了两个很有用enum:Store和Index,用它们来设置对Field进行索引时的一些属性。

Field类中还有一个内部类,它的声明如下:

 

 

这是一个与词条有关的枚举类型。

 

在3.0之前的lucene中,通常store index termvector都是被设置为静态内部类。。3.0开始设置为枚举类型。。。。。。

 

 

同时,Field的值可以构造成很多类型,Field类中定义了4种:String、Reader、byte[]、TokenStream。

然后就是Field对象的构造,应该看它的构造方法,它有9种构造方法:

 


还要注意了,通过Field类的声明:

public final class Field extends AbstractField implements Fieldable , Serializable

可以看出,应该对它继承的父类AbstractField类 有一个了解,下面的是AbstractField类的属性:


还有Field实现了Fieldable接口添加了 一些对对应的Document中的Field进行管理判断的方法信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值