public class Indexer {
public static String[] strs = { "This is Tom!", "Hi, Marry.",
"Lucene is good" };
public static String indexDir = "d:/LuceneIndex";
public static void main(String[] args) {
IndexWriter writer = null;
try {
// 索引目录
Directory dir = FSDirectory.open(new File(indexDir));
// 配置并新建索引
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_36,
new StandardAnalyzer(Version.LUCENE_36));
writer = new IndexWriter(dir, config);
// 往索引中写入文档
for (String str : strs) {
// 新建文档
Document doc = new Document();
// 域
Field field = new Field("contents", str, Field.Store.YES,
Field.Index.ANALYZED);
// 向文档中加入域
doc.add(field);
// 添加文档
writer.addDocument(doc);
}
System.out.println("被索引的文档个数:" + writer.numDocs());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null)
try {
// 关闭writer
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在代码中可以看得出,索引的建立主要是通过IndexWriter这个类来生成。IndexWriter的构造方法是:IndexWriter(Directory d, IndexWriterConfig conf)。需要传入一个Directory以及一个IndexWriterConfig对象。
Document就类似我们数据库的里面的一条记录。Field可以理解为这条记录的一个字段。
在添加完Document之后,记得使用writer.close();方法来关闭writer。