码迷,mamicode.com
首页 > 其他好文 > 详细

使用RAMDirectory 和 FSDirectory对于索引创建的优化

时间:2015-03-21 11:18:06      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

/*
 * 这里使用的是索引的优化
 * 这里有话使用的是对于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();
}


}

使用RAMDirectory 和 FSDirectory对于索引创建的优化

标签:

原文地址:http://blog.csdn.net/u012965373/article/details/44513865

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!