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

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


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨鑫newlfe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值