RAMDirectory中的内容转到FSDirectory

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.document.Field.Index;

import org.apache.lucene.document.Field.Store;

import org.apache.lucene.index.CorruptIndexException;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.Term;

import org.apache.lucene.search.Hits;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.TermQuery;

import org.apache.lucene.store.Directory;

import org.apache.lucene.store.FSDirectory;

import org.apache.lucene.store.LockObtainFailedException;

import org.apache.lucene.store.RAMDirectory;

/**

 * @author Vincnet

 * @version 2.3

 * 

 */

public class Test {

public static void main(String[] args) throws CorruptIndexException,

LockObtainFailedException, IOException {

long data1 = System.currentTimeMillis();

/**

* 分别创建两个对象

* */

FSDirectory fsDir = FSDirectory.getDirectory("E://Lucene//Index2//");

RAMDirectory ramDir = new RAMDirectory();

IndexWriter ramwriter = new IndexWriter(ramDir, new StandardAnalyzer(),true);

IndexWriter fsdwriter = new IndexWriter(fsDir, new StandardAnalyzer(),true);

Document document = new Document();

/**

* Field(String name, String value, Field.Store store, Field.Index index)

         * Create a field by specifying its name, value and how it will be saved in the index.

*

*/

document.add(new Field("name","Vincnet",Store.YES,Index.TOKENIZED));

document.add(new Field("age","18",Store.YES,Index.UN_TOKENIZED));

document.add(new Field("note","this is a test data",Store.YES,Index.TOKENIZED));

ramwriter.addDocument(document);

fsdwriter.addDocument(document);

ramwriter.flush();

//将fsd里面的索引和ram的索引合并成同一个所以 关键一句 

fsdwriter.addIndexes(new Directory[]{ramDir});

ramwriter.close();

fsdwriter.flush();

fsdwriter.close();

IndexSearcher searcher = new IndexSearcher(ramDir);

Hits hits = searcher.search(new TermQuery(new Term("name","vincnet")));

for(int i = 0 ; i < hits.length() ; i++){

System.out.println(hits.length()+"   "+hits.doc(i).get("name"));

}

searcher.close();

System.out.println("运行时间 : "+(System.currentTimeMillis() - data1)+" ms");

}

}

相关推荐