IndexWriter | 较核心的类,index文件由它创建 |
Directory | 一个抽象的标示index文件地址的类,有两个实现:FSDirectory和RAMDirectory, 前者是基于文件系统,后者使用内存 |
Analyzer | 文件的分析器(听起来别扭,还是叫Analyzer好了)的抽象,这个类用来处理分词(对中文尤其重要,转换大小写(Computer->computer,实现查询大小写无关),转换词根(computers->computer),消除stop words等,还负责把其他格式文档转换为纯文本等 |
Document | 一个Document对应一个文档记录,他有很多Field,用来处理不同的信息,和检索相关 |
Field | 有4(5?)种类型的Field, 下面专门列出 |
stop words: 出现频率非常高的一些词汇,它们一般没有检索的意义, 比如英文中的(as a, an, the, in)
Field.Keyword(String,String/Date) | Y | Y | 这个Field用来储存会直接用来检索的比如(身份证号,姓名,日期等) | |
Field.UnIndexed(String,String) | Y | 不会用来检索的信息,但是检索后需要显示的,比如,硬件序列号,文档的url地址 | ||
Field.UnStored(String,String) | Y | Y | 大段文本内容,会用来检索,但是检索后不需要从index中取内容,可以根据url去load真实的内容 | |
Field.Text(String,String) | Y | Y | Y | 检索,获取都需要的内容,直接放index中,不过这样会增大index |
Field.Text(String,Reader) | Y | Y | 如果是一个Reader, lucene猜测内容比较多,会采用Unstored的策略. |
IndexSearcher | 以只读的方式访问index(注意IndexReader不是只读的),需要传给他一个Query对象来搜索 |
Term | Term是一个搜索的基本单位,包含一个Field(目标)和一个value(条件),可以直接用new Term("field","condition value")构造 |
Query | Query有很多子类,比如BooleanQuery,PhraseQuery等,可以在Term基础上加上逻辑(是 否, 或) |
TermQuery | 一个很基本的Query, 可以由term构造 new TermQuery(term); |
Hits | 包含了搜索的结构,默认按照相关度排序,hits并不会把所有记录(可能很大)直接保存,而是有一个lazy loading机制 |
tips
来源:http://www.blogjava.net/cap/archive/2005/07/17/7849.html