如何用Lucene为目录创建索引

现在网上很多例子都是基于老版本的Lucene做得例子,我给改了一下,这个例子是基于lucene 2.4的,希望能有所帮助
  1. packageutils;
  2. importjava.io.File;
  3. importjava.io.FileReader;
  4. importjava.io.IOException;
  5. importjava.io.Reader;
  6. importorg.apache.lucene.analysis.standard.StandardAnalyzer;
  7. importorg.apache.lucene.document.Document;
  8. importorg.apache.lucene.document.Field;
  9. importorg.apache.lucene.index.IndexWriter;
  10. publicclassIndexer{
  11. publicintindex(StringindexDir,StringdataDir)throwsIOException
  12. {
  13. FileindexDirFile=newFile(indexDir);
  14. FiledataDirFile=newFile(dataDir);
  15. intnumIndexed=index(indexDirFile,dataDirFile);
  16. return0;
  17. }
  18. privateintindex(FileindexDirFile,FiledataDirFile)throwsIOException{
  19. if(!dataDirFile.exists()||!dataDirFile.isDirectory())
  20. {
  21. thrownewIOException(dataDirFile+"doesnotexistorisnotadirectory");
  22. }
  23. IndexWriterwriter=newIndexWriter(indexDirFile,newStandardAnalyzer(),true);
  24. writer.setUseCompoundFile(false);
  25. indexDirectory(writer,dataDirFile);
  26. intnumIndexed=writer.docCount();
  27. writer.optimize();
  28. writer.close();
  29. returnnumIndexed;
  30. }
  31. privatevoidindexDirectory(IndexWriterwriter,FiledataDirFile)throwsIOException{
  32. File[]files=dataDirFile.listFiles();
  33. for(inti=0;i<files.length;i++)
  34. {
  35. Filef=files[i];
  36. if(f.isDirectory())
  37. {
  38. indexDirectory(writer,f);
  39. }elseif(f.getName().endsWith(".java") || f.getName().endsWith(".txt"))//需要索引的文件类型
  40. {
  41. indexFile(writer,f);
  42. }
  43. }
  44. }
  45. privatevoidindexFile(IndexWriterwriter,Filef)throwsIOException{
  46. if(f.isHidden()||!f.exists()||!f.canRead())
  47. {
  48. return;
  49. }
  50. System.out.println("Indexing"+f.getCanonicalPath());
  51. Documentdoc=newDocument();
  52. ReadertxtReader=newFileReader(f);
  53. doc.add(newField("path",f.getCanonicalPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
  54. doc.add(newField("contents",txtReader));
  55. doc.add(newField("name",f.getName(),Field.Store.YES,Field.Index.UN_TOKENIZED));
  56. writer.addDocument(doc);
  57. }
  58. }
调用的代码如下:
  1. StringfilesRepoDir="C:/workspace-2.0";//需要被索引的目录
  2. StringindexDir="C:/apache-tomcat-6.0.18/webapps/index";//存放索引的目录
  3. Indexerindexer=newIndexer();
  4. indexer.index(indexDir,filesRepoDir);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值