Lucene API分为以下几个包:
1) org.apache.lucene.analysis
定义了抽象类Analyzer的API,能将文本text从java.io.Reader转化成一个TokenStream,其中TokenStream是Attributes(即单词)的枚举。TokenStream可以通过对Tokenizer的输出调用TokenFilters来获得。一个Analyzer一般会用到Tokenzier以及TokenFilter。此包包含一些常用的Analyzer的实现类,如StopAnalyzer以及StandardAnalyzer。
2) org.apache.lucene.document
此包提供了一个简单的Document类。一个Document对象是字段Field的集合,这个集合可能是字符串或者java.io.Reader。
3) org.apache.lucene.index
提供了两个基础类:IndexWriter,用于创建和添加Documents到索引中;IndexReader,用于从索引中读取数据。
4) org.apache.lucene.search
提供了用于表示查询query的一些数据结构(TermQuery,PhraseQuery,BooleanQuery等等),除此之外还提供了抽象类Searcher,此类用于将查询query转化成TopDoc,即查询出来的最优结果。IndexSearcher是在IndexReader基础之上的一个Searcher类实现。
5) org.apache.lucene.queryParser
使用JavaCC来实现一个QueryParser。(JavaCC(Java Compiler Compiler)是一个用JAVA开发的最受欢迎的语法分析生成器。)
6) org.apache.lucene.store
定义了一个抽象类Directory来存储持久的数据,其实是一个文件索引集合,这些文件能被IndexOutput和IndexInput来读写。此包给出了两个实现:FSDirectory,将文件集合存到文件系统中;RAMDirectory,通过内存中的数据结构来存储文件。
7) org.apache.lucene.util
包括一些常用的数据结构以及工具类,如BitVector以及PriorityQueue等。