/*
* 这里使用的是索引的优化
* 这里有话使用的是对于FSDirectory和RAMDirectory的路径的选择,
* FSDirectory使用的是系统磁盘上文件的路径
* 而RAMDiectory使用的是内存中的路径
* RAM的不可以永久保存
* 下面的代码就是分别演示这两种建立存储索引的方法。
* */
package merge;
import java.io.IOException;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.RAMDirectory;
public class MergeIndex {
//创建索引的路径
private String INDEX_PATH = "E:\\Lucene项目\\索引路径";
//声明一个RAMDirectory对象
RAMDirectory ramDir = null;
//声明一个FSDirectory对象
FSDirectory fsDir = null;
public MergeIndex(){
System.out.println("============程序开始了=========");
try{
System.out.println("创建ram索引目录--------------->>>");
ramDir = new RAMDirectory();
System.out.println("创建fs索引目录---------------->>>");
fsDir = FSDirectory.getDirectory(INDEX_PATH, true);
System.out.println("创建索引器 1 ----------------->>>");
//构建一个索引器,并以文件系统目录为其目标目录
IndexWriter fsWriter = new IndexWriter(fsDir, new StandardAnalyzer(), true);
System.out.println("创建索引器 2 ----------------->>>");
//构建一个索引器,并以内存作为目标路径
IndexWriter ramWriter = new IndexWriter(ramDir, new StandardAnalyzer(), true);
System.out.println("创建文档 1 和字段------------------------>>>");
//创建第一个文档
Document doc1 = new Document();
Field bookdNo1 = new Field("booknumber", "BOOKNUM1", Field.Store.YES, Field.Index.UN_TOKENIZED);
doc1.add(bookdNo1);
System.out.println("创建文档 2 和字段----------------->>>");
//创建第二个文档
Document doc2 = new Document();
Field bookdNo2 = new Field("booknumber", "BOOKNUM2", Field.Store.YES, Field.Index.UN_TOKENIZED);
doc1.add(bookdNo2);
System.out.println("将第一个文档加入到ram索引的目录中 ----------------->>>");
//将第一个文档加入内存目录中
ramWriter.addDocument(doc1);
//关闭
ramWriter.close();
System.out.println("将第二个文档加入到fs索引的目录中 ----------------->>>");
//将第二个文档加入到系统磁盘目录中
fsWriter.addDocument(doc2);
fsWriter.addIndexes(new Directory[]{ramDir});
//关闭磁盘索引器
fsWriter.close();
System.out.println("关闭数据流,程序结束---------》》》》");
System.out.println("请到目录下查看生成的索引文件 ---"+ INDEX_PATH +"-------------->>>");
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
MergeIndex mi = new MergeIndex();
}
}