DocumentListener 的代码如下
java学习 java培训
软件工程师 如何学习java 学习java哪里好 东方清软java培训 清软国际java学习
计算机软件学习
public interface
DocumentListener extends EventListener {
public void
documentExtracted(Document doc);
}java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
为了让索引模块能够知道所有需要被索引的资源,我们在这里使用 Spring 风格的 XML
文件配置索引模块中的所有组件,尤其是所有资源。java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
基于以上内容,我们可以大致描述出索引模块工作的过程:
首先在 XML 配置的 bean 中找出所有 Resource 对象;
对每一个调用其 extractDocuments() 方法,这一步除了完成对资源的索引外,还会在每次提取出一个 Document
对象之后,通知注册在该资源上的所有 DocumentListener;
接着处理资源的元数据(getMetaData() 的返回值);
将缓存里的数据写入到本地磁盘或者传送给远程服务器;java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
在这个过程中,有两个地方值得注意。
第一,对资源可以注册 DocumentListener
使得我们可以在运行时刻对索引过程有更为动态的控制。举一个简单例子,对某个文章发布站点的文章进行索引时,一个很正常的要求便是发布时间更靠近当前时间的文章需要在搜索结果中排在靠前的位置。每篇文章显然对应一个
Document 对象,在 Lucene 中我们可以通过设置 Document 的 boost
值来对其进行加权。假设其中文章发布时间的 Field 的名称为 PUB_TIME,那么我们可以为资源注册一个
DocumentListener,当它被通知时,则检测 PUB_TIME 的值,根据距离当前时间的远近进行加权。
第二点很显然,在这个过程中,extractDocuments()
方法的实现依不同类型的资源而各异。下面我们主要讨论两种类型的资源:文件系统资源和数据库结果集资源。这两个类都实现了上面的
接口。java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
为什么选择使用 Spring 风格的配置文件?这主要有两个好处:
仅依赖于 Spring Core 和 Spring Beans 便免去了定义配置机制和解析配置文件的负担;
Spring 的 IoC 机制降低了框架的耦合性,并使扩展框架变得简单;java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
文件系统资源
对文件系统资源的索引通常从一个基目录开始,递归处理每个需要进行索引的文件。该资源有一个字符串数组类型的
excludedFiles 属性,表示在处理文件时需要排除的文件绝对路径的正则表达式。在递归遍历文件系统树的同时,绝对路径匹配
excludedFiles
中任意一项的文件将不会被处理。这主要是考虑到一般我们只需要对一部分文件夹(比如排除可能存在的备份目录)中的一部分文件(如 doc,
ppt 文件等)进行索引。java学习 java培训 软件工程师 如何学习java 学习java哪里好
东方清软java培训 清软国际java学习 计算机软件学习
java学习 java培训 软件工程师 如何学习java
学习java哪里好 东方清软java培训 清软国际java学习 计算机软件学习