


















































































































































































































































































































<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->importorg.apache.lucene.store.Directory;
importorg.apache.lucene.store.FSDirectory;
importorg.apache.lucene.store.RAMDirectory;
importorg.apache.lucene.document.Document;
importorg.apache.lucene.document.Field;
importorg.apache.lucene.index.IndexWriter;
importorg.apache.lucene.analysis.SimpleAnalyzer;
importjunit.framework.TestCase;
importjava.io.IOException;
importjava.util.Collection;
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassFSversusRAMDirectoryTestextendsTestCase
{
privateDirectoryfsDir;
privateDirectoryramDir;
privateCollectiondocs=loadDocuments(3000,5);//加载数据
protectedvoidsetUp()throwsException
{
StringfsIndexDir=System.getProperty("java.io.tmpdir","tmp")+System.getProperty("file.separator")+"fs-index";
ramDir=newRAMDirectory();//内存中目录
fsDir=FSDirectory.getDirectory(fsIndexDir,true);
}
publicvoidtestTiming()throwsIOException
{
longramTiming=timeIndexWriter(ramDir);
longfsTiming=timeIndexWriter(fsDir);
assertTrue(fsTiming>ramTiming);
System.out.println("RAMDirectoryTime:"+(ramTiming)+"ms");
System.out.println("FSDirectoryTime:"+(fsTiming)+"ms");
}
privatelongtimeIndexWriter(Directorydir)throwsIOException
{
longstart=System.currentTimeMillis();
addDocuments(dir);
longstop=System.currentTimeMillis();
return(stop-start);
}
privatevoidaddDocuments(Directorydir)throwsIOException
{
IndexWriterwriter=newIndexWriter(dir,newSimpleAnalyzer(),true);
/**
//changetoadjustperformanceofindexingwithFSDirectory
writer.mergeFactor=writer.mergeFactor;
writer.maxMergeDocs=writer.maxMergeDocs;
writer.minMergeDocs=writer.minMergeDocs;
*/
for(Iteratoriter=docs.iterator();iter.hasNext();)
{
Documentdoc=newDocument();
Stringword=(String)iter.next();
doc.add(newField("keyword",word,Field.Store.YES,Field.Index.UN_TOKENIZED));
doc.add(newField("unindexed",word,Field.Store.YES,Field.Index.NO));
doc.add(newField("unstored",word,Field.Store.NO,Field.Index.TOKENIZED));
doc.add(newField("text",word,Field.Store.YES,Field.Index.TOKENIZED));
writer.addDocument(doc);
}
writer.optimize();
writer.close();
}
privateCollectionloadDocuments(intnumDocs,intwordsPerDoc)
{
Collectiondocs=newArrayList(numDocs);
for(inti=0;i<numDocs;i++)
{
StringBufferdoc=newStringBuffer(wordsPerDoc);
for(intj=0;j<wordsPerDoc;j++)
{
doc.append("Bibamus");
}
docs.add(doc.toString());
}
returndocs;
}
}
importorg.apache.lucene.store.FSDirectory;
importorg.apache.lucene.store.RAMDirectory;
importorg.apache.lucene.document.Document;
importorg.apache.lucene.document.Field;
importorg.apache.lucene.index.IndexWriter;
importorg.apache.lucene.analysis.SimpleAnalyzer;
importjunit.framework.TestCase;
importjava.io.IOException;
importjava.util.Collection;
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassFSversusRAMDirectoryTestextendsTestCase
{
privateDirectoryfsDir;
privateDirectoryramDir;
privateCollectiondocs=loadDocuments(3000,5);//加载数据
protectedvoidsetUp()throwsException
{
StringfsIndexDir=System.getProperty("java.io.tmpdir","tmp")+System.getProperty("file.separator")+"fs-index";
ramDir=newRAMDirectory();//内存中目录
fsDir=FSDirectory.getDirectory(fsIndexDir,true);
}
publicvoidtestTiming()throwsIOException
{
longramTiming=timeIndexWriter(ramDir);
longfsTiming=timeIndexWriter(fsDir);
assertTrue(fsTiming>ramTiming);
System.out.println("RAMDirectoryTime:"+(ramTiming)+"ms");
System.out.println("FSDirectoryTime:"+(fsTiming)+"ms");
}
privatelongtimeIndexWriter(Directorydir)throwsIOException
{
longstart=System.currentTimeMillis();
addDocuments(dir);
longstop=System.currentTimeMillis();
return(stop-start);
}
privatevoidaddDocuments(Directorydir)throwsIOException
{
IndexWriterwriter=newIndexWriter(dir,newSimpleAnalyzer(),true);
/**
//changetoadjustperformanceofindexingwithFSDirectory
writer.mergeFactor=writer.mergeFactor;
writer.maxMergeDocs=writer.maxMergeDocs;
writer.minMergeDocs=writer.minMergeDocs;
*/
for(Iteratoriter=docs.iterator();iter.hasNext();)
{
Documentdoc=newDocument();
Stringword=(String)iter.next();
doc.add(newField("keyword",word,Field.Store.YES,Field.Index.UN_TOKENIZED));
doc.add(newField("unindexed",word,Field.Store.YES,Field.Index.NO));
doc.add(newField("unstored",word,Field.Store.NO,Field.Index.TOKENIZED));
doc.add(newField("text",word,Field.Store.YES,Field.Index.TOKENIZED));
writer.addDocument(doc);
}
writer.optimize();
writer.close();
}
privateCollectionloadDocuments(intnumDocs,intwordsPerDoc)
{
Collectiondocs=newArrayList(numDocs);
for(inti=0;i<numDocs;i++)
{
StringBufferdoc=newStringBuffer(wordsPerDoc);
for(intj=0;j<wordsPerDoc;j++)
{
doc.append("Bibamus");
}
docs.add(doc.toString());
}
returndocs;
}
}