建立索引
索引
![](/icons/52560de.gif)
建立
![](/icons/52560dou.gif)
Lucene 提供了 5个基础类
![](/icons/52560dou.gif)
分别是 Document, Field, IndexWriter, Analyzer, Directory
![](/icons/52560dou2.gif)
以下是他们
![](/icons/52560de.gif)
用途:
Document
Document 字面意思是文档
![](/icons/52560dou.gif)
这里
![](/icons/52560de.gif)
文档可以是
![](/icons/52560yi.gif)
个 HTML,
![](/icons/52560yi.gif)
封电子邮件
![](/icons/52560dou.gif)
文本文件
![](/icons/52560dou.gif)
doc文档.......
![](/icons/52560dou2.gif)
![](/icons/52560yi.gif)
个 Document 对象由多个 Field 组成
![](/icons/52560de.gif)
![](/icons/52560dou2.gif)
可以把
![](/icons/52560yi.gif)
个 Document 对象想象成数据库中
![](/icons/52560de.gif)
![](/icons/52560yi.gif)
个记录
![](/icons/52560dou.gif)
而每个 Field 对象就是记录
![](/icons/52560de.gif)
![](/icons/52560yi.gif)
个字段
![](/icons/52560dou2.gif)
Field
Field 对象是用来描述
![](/icons/52560yi.gif)
个文档
![](/icons/52560de.gif)
某个属性
![](/icons/52560de.gif)
![](/icons/52560dou.gif)
比如
![](/icons/52560yi.gif)
封电子邮件
![](/icons/52560de.gif)
标题和内容可以用两个 Field 对象分别描述
![](/icons/52560dou2.gif)
Analyzer
在
![](/icons/52560yi.gif)
个文档被索引的前
![](/icons/52560dou.gif)
首先需要对文档内容进行分词处理
![](/icons/52560dou.gif)
这部分工作就是由 Analyzer 来做
![](/icons/52560de.gif)
![](/icons/52560dou2.gif)
Analyzer 类是
![](/icons/52560yi.gif)
个抽象类
![](/icons/52560dou.gif)
它有多个实现
![](/icons/52560dou2.gif)
针对区别
![](/icons/52560de.gif)
语言和应用需要选择适合
![](/icons/52560de.gif)
Analyzer
![](/icons/52560dou2.gif)
Analyzer 把分词后
![](/icons/52560de.gif)
内容交给 IndexWriter 来建立索引
![](/icons/52560dou2.gif)
IndexWriter
IndexWriter 是 Lucene 用来创建索引
![](/icons/52560de.gif)
![](/icons/52560yi.gif)
个核心
![](/icons/52560de.gif)
类
![](/icons/52560dou.gif)
他
![](/icons/52560de.gif)
作用是把
![](/icons/52560yi.gif)
个个
![](/icons/52560de.gif)
Document 对象加到索引中来
![](/icons/52560dou2.gif)
Directory
这个类代表了 Lucene
![](/icons/52560de.gif)
索引
![](/icons/52560de.gif)
存储
![](/icons/52560de.gif)
位置
![](/icons/52560dou.gif)
这是
![](/icons/52560yi.gif)
个抽象类
![](/icons/52560dou.gif)
它目前有两个实现
![](/icons/52560dou.gif)
第
![](/icons/52560yi.gif)
个是 FSDirectory
![](/icons/52560dou.gif)
它表示
![](/icons/52560yi.gif)
个存储在文件系统中
![](/icons/52560de.gif)
索引
![](/icons/52560de.gif)
位置
![](/icons/52560dou2.gif)
第 2个是 RAMDirectory
![](/icons/52560dou.gif)
它表示
![](/icons/52560yi.gif)
个存储在内存当中
![](/icons/52560de.gif)
索引
![](/icons/52560de.gif)
位置
![](/icons/52560dou2.gif)
搜索文档
利用Lucene进行搜索就像建立索引
![](/icons/52560yi.gif)
样也是非常方便
![](/icons/52560de.gif)
![](/icons/52560dou2.gif)
在上面
![](/icons/52560yi.gif)
部分中
![](/icons/52560dou.gif)
我们已经为
![](/icons/52560yi.gif)
个目录下
![](/icons/52560de.gif)
文本文档建立好了索引
![](/icons/52560dou.gif)
现在我们就要在这个索引 上进行搜索以找到包含某个关键词或短语
![](/icons/52560de.gif)
文档
![](/icons/52560dou2.gif)
Lucene提供了几个基础
![](/icons/52560de.gif)
类来完成这个过程
![](/icons/52560dou.gif)
它们分别是呢IndexSearcher, Term, Query, TermQuery, Hits. 下面我们分别介绍这几个类
![](/icons/52560de.gif)
功能
![](/icons/52560dou2.gif)
Query
这是
![](/icons/52560yi.gif)
个抽象类
![](/icons/52560dou.gif)
他有多个实现
![](/icons/52560dou.gif)
比如TermQuery, BooleanQuery, PrefixQuery. 这个类
![](/icons/52560de.gif)
目
![](/icons/52560de.gif)
是把用户输入
![](/icons/52560de.gif)
查询
![](/icons/52560zifu.gif)
串封装成Lucene能够识别
![](/icons/52560de.gif)
Query
![](/icons/52560dou2.gif)
Term
Term是搜索
![](/icons/52560de.gif)
基本单位
![](/icons/52560dou.gif)
![](/icons/52560yi.gif)
个Term对象有两个String类型
![](/icons/52560de.gif)
域组成
![](/icons/52560dou2.gif)
生成
![](/icons/52560yi.gif)
个Term对象可以有如下
![](/icons/52560yi.gif)
条语句来完成:Term term =
![](/icons/52560new.gif)
Term(“fieldName”,”queryWord”); 其中第
![](/icons/52560yi.gif)
个参数代表了要在文档
![](/icons/52560de.gif)
哪
![](/icons/52560yi.gif)
个Field上进行查找
![](/icons/52560dou.gif)
第 2个参数代表了要查询
![](/icons/52560de.gif)
关键词
![](/icons/52560dou2.gif)
TermQuery
TermQuery是抽象类Query
![](/icons/52560de.gif)
![](/icons/52560yi.gif)
个子类
![](/icons/52560dou.gif)
它同时也是Lucene支持
![](/icons/52560de.gif)
最为基本
![](/icons/52560de.gif)
![](/icons/52560yi.gif)
个查询类
![](/icons/52560dou2.gif)
生成
![](/icons/52560yi.gif)
个TermQuery对象由如下语句 完成: TermQuery termQuery =
![](/icons/52560new.gif)
TermQuery(
![](/icons/52560new.gif)
Term(“fieldName”,”queryWord”)); 它
![](/icons/52560de.gif)
构造
![](/icons/52560hanshu.gif)
只接受
![](/icons/52560yi.gif)
个参数
![](/icons/52560dou.gif)
那就是
![](/icons/52560yi.gif)
个Term对象
![](/icons/52560dou2.gif)
IndexSearcher
IndexSearcher是用来在建立好
![](/icons/52560de.gif)
索引上进行搜索
![](/icons/52560de.gif)
![](/icons/52560dou2.gif)
它只能以只读
![](/icons/52560de.gif)
方式打开
![](/icons/52560yi.gif)
个索引
![](/icons/52560dou.gif)
所以可以有多个IndexSearcher
![](/icons/52560de.gif)
例子在
![](/icons/52560yi.gif)
个索引上进行操作
![](/icons/52560dou2.gif)
Hits
Hits是用来保存搜索
![](/icons/52560de.gif)
结果
![](/icons/52560de.gif)