LuceneIndexList.java
上传用户:cctqzzy
上传日期:2022-03-14
资源大小:12198k
文件大小:2k
源码类别:

搜索引擎

开发平台:

Java

  1. package chapter5;
  2. import java.io.IOException;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import org.apache.lucene.store.FSDirectory;
  6. import org.apache.lucene.store.Directory; 
  7. import org.apache.lucene.store.RAMDirectory;
  8. import org.apache.lucene.document.Field;
  9. import org.apache.lucene.document.Document;
  10. import org.apache.lucene.index.IndexWriter;
  11. import org.apache.lucene.analysis.SimpleAnalyzer;
  12. /*******************************************************************
  13.  * 本代码完成已经建立的索引的合并和优化,用来把不同时间不同线程创建的索引进行合并,优化性能,
  14.  * 提高检索速度。
  15.  *******************************************************************/
  16. public class LuceneIndexList {
  17. private static String Dest_Index_Path = "D:\workshop\TextIndex";
  18. private static String Text_File_Path_Work  = "D:\workshop\TextIndexstore";
  19. /*========================================================
  20.  * 主函数,执行 Lucene 索引合并操作
  21.  *========================================================*/
  22. public static void main(String[] args) {
  23. File indexpath = new File(Dest_Index_Path);
  24. File localPath = new File(Text_File_Path_Work);
  25. try {
  26. int nums = indexMerge(indexpath,localPath);
  27. System.out.println("Index Finished " + nums + "  docs");
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. public static int indexMerge( File indexPath , File localPath ) 
  33. throws IOException{
  34.     IndexWriter fswriter = null ;     
  35.     IndexWriter ramwriter = null ;  
  36.     Directory ramDir  = new RAMDirectory();            // 内存高速目录
  37.     fswriter = new IndexWriter(indexPath, new SimpleAnalyzer(),false);  // 追加模式添加索引
  38.     ramwriter = new IndexWriter(ramDir, new SimpleAnalyzer(),true);     // 构建内存RAM的索引
  39.     FSDirectory[] fs = { FSDirectory.getDirectory(localPath , false) }; // 生成目录文件 
  40.     ramwriter.addIndexes(fs);                                           // 添加目录中的索引到内存索引
  41.     ramwriter.optimize();                                               // 内存索引优化    
  42.     ramwriter.close();                                                  //关闭内存索引 
  43.     
  44.     fswriter.addIndexes(new Directory[]{ramDir});       // 合并内存索引到目标地址指定的文件索引
  45.       fswriter.close();                                   // 关闭文件索引 
  46.     return 0;
  47. }
  48.  }