现在网上很多例子都是基于老版本的Lucene做得例子,我给改了一下,这个例子是基于lucene 2.4的,希望能有所帮助
调用的代码如下:
- packageutils;
- importjava.io.File;
- importjava.io.FileReader;
- importjava.io.IOException;
- importjava.io.Reader;
- importorg.apache.lucene.analysis.standard.StandardAnalyzer;
- importorg.apache.lucene.document.Document;
- importorg.apache.lucene.document.Field;
- importorg.apache.lucene.index.IndexWriter;
- publicclassIndexer{
- publicintindex(StringindexDir,StringdataDir)throwsIOException
- {
- FileindexDirFile=newFile(indexDir);
- FiledataDirFile=newFile(dataDir);
- intnumIndexed=index(indexDirFile,dataDirFile);
- return0;
- }
- privateintindex(FileindexDirFile,FiledataDirFile)throwsIOException{
- if(!dataDirFile.exists()||!dataDirFile.isDirectory())
- {
- thrownewIOException(dataDirFile+"doesnotexistorisnotadirectory");
- }
- IndexWriterwriter=newIndexWriter(indexDirFile,newStandardAnalyzer(),true);
- writer.setUseCompoundFile(false);
- indexDirectory(writer,dataDirFile);
- intnumIndexed=writer.docCount();
- writer.optimize();
- writer.close();
- returnnumIndexed;
- }
- privatevoidindexDirectory(IndexWriterwriter,FiledataDirFile)throwsIOException{
- File[]files=dataDirFile.listFiles();
- for(inti=0;i<files.length;i++)
- {
- Filef=files[i];
- if(f.isDirectory())
- {
- indexDirectory(writer,f);
- }elseif(f.getName().endsWith(".java") || f.getName().endsWith(".txt"))//需要索引的文件类型
- {
- indexFile(writer,f);
- }
- }
- }
- privatevoidindexFile(IndexWriterwriter,Filef)throwsIOException{
- if(f.isHidden()||!f.exists()||!f.canRead())
- {
- return;
- }
- System.out.println("Indexing"+f.getCanonicalPath());
- Documentdoc=newDocument();
- ReadertxtReader=newFileReader(f);
- doc.add(newField("path",f.getCanonicalPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
- doc.add(newField("contents",txtReader));
- doc.add(newField("name",f.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED));
- writer.addDocument(doc);
- }
- }
- StringfilesRepoDir="C:/workspace-2.0";//需要被索引的目录
- StringindexDir="C:/apache-tomcat-6.0.18/webapps/index";//存放索引的目录
- Indexerindexer=newIndexer();
- indexer.index(indexDir,filesRepoDir);