Document类

建立索引的过程
建立索引是搜索引擎的第一步,建立索引可以分为以下几个步骤:
提取文本信息
构建Document
分析
建立索引
 
提取文本信息
Lucene 对文档数据建立索引的第一步就是把这些需要建立索引的文档数据转换为Lucene能够处理的类型。实际上Lucene是无法处理pdf, txt, doc ... 这些格式的物理数据的,那么如果有一堆PDF格式的文件或者是DOC格式的文件需要建立索引,首要的事情就是从这些格式的文件里头抽取出文本信息。然后把这些抽取出来的文本信息构建Document和Field。
 
构建Document
这是建立索引过程的第二步,Lucene从硬盘中读取物理文件,然后对这些文件建立索引,将索引保存在一个指定的目录下.那么文件的格式是多种多样的,有PDF,TXT,DOC等等。所以这是一个很复杂的事情。为此Lucene自带了一个Docement类,这个类屏蔽了文件格式,也就是说Lucene是无法对PDF,TXT,DOC等物理文件建立索引的,它只能对Document文件建立索引,Document是一个虚拟的文件,事实上它并不存在。它只起一个包装的功能,那么建立索引的第一步就是把各种数据源(就是各种不同格式的文件,比如PDF)转换为Document格式。
下面仔细看看 Document 的用法 :
 
package testlucene.IndexTest;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.Reader;
 
import org.apache.lucene.document.DateField;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
 
public class DocumentTest {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    }
   
    /**
     * 使用指定的文件构造 Document 对象
     * @param f 文件名
     * @return
     * @throws FileNotFoundException
     */
    public Document document(File f) throws FileNotFoundException{
        // 新建一个空 Document 对象
Document doc = new Document();
        // 添加文件的路径到字段 path
        doc.add(Field.Keyword("path", f.getAbsolutePath()));
        // 添加文件最后一次修改的时间信息到字段 modified
        doc.add(Field.Keyword("modified", DateField.timeToString(f.lastModified())));
        // 添加文件的内容到字段 content
        FileInputStream is = new FileInputStream(f);
        Reader reader = new BufferedReader(new InputStreamReader(is));
        doc.add(Field.Text("content", reader));
        // 返回已经假载数据的 doc 对象
        return doc;
    }
}
 
 
总结:
任何一个需要被索引的 文件 最终都必须转换为 Document 对象才可以被索引和搜索到 , 实际上并非物理文件才可以被索引和搜索,任何数据源经过被组织后都可以被构建成一个 Document 对象。更进一步的说 Lucene 并不为任何实际物理文件建立索引,而是对 Document 对象建立索引 , 那么我们可以把 Document 看做一个虚拟的文件,它是一个工厂,任何格式的数据源都经过这个工厂转换为相同格式的数据,以方便 Lucene 建立索引和搜索 . 使用 Document 的好处就是 Lucene 可以不用跟任何格式的具体文件关联,无论需要被索引的文件是什么格式, Lucene 都不理会,它需要的是程序员把这些具体格式的数据源转换为 Document 格式。属于封装模式的一种体现。
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值