lucene:no segments* file found in org.apache.lucene.store.FSDirectory@异常

  1. 目的:我想把内存中的索引合并到磁盘文件中。
  2. 异常:org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.RAMDirectory@1e94b0ca lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@33e2ad75: files: [_0.fdx, _0.fdt]
     at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:741)
     at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:630)
     at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:343)
     at org.apache.lucene.index.IndexWriter.addIndexes(IndexWriter.java:2333)
     at org.apache.lucene.demo.IKAnalyzerT.createIndex(IKAnalyzerT.java:45)
     at org.apache.lucene.demo.IKAnalyzerT.main(IKAnalyzerT.java:58)

意思是:我在把内存索引合并到磁盘的时候 内存中没有索引文件。

我的解决方案参考: 在索引库没有建立并且没有索引文件的时候首先要commit一下让他建立一个

  

  1. public class X {  
  2.     public static void main(String[] args) throws Exception{  
  3.         Analyzer a = new StandardAnalyzer(Version.LUCENE_CURRENT);  
  4.         IndexDeletionPolicy commitDeletionPolicy = new  SolrDeletionPolicy();  
  5.         FSDirectory directory = FSDirectory.open(new File("c:\\"));  
  6.           
  7.         IndexWriterConfig config = new   
  8.         IndexWriterConfig(Version.LUCENE_CURRENT,a);   
  9.         config.setOpenMode(OpenMode.CREATE_OR_APPEND);   
  10.         config.setIndexDeletionPolicy(commitDeletionPolicy);   
  11.         IndexWriter writer = new IndexWriter(directory, config);   
  12.   
  13.         // -----------------   
  14.         // 在索引库没有建立并且没有索引文件的时候首先要commit一下让他建立一个  
  15.         // 索引库的版本信息  
  16.         //writer.commit();   
  17.         // -----------------   
  18.           
  19.         //如果第一次没有commit就打开一个索引读取器的话就会报异常  
  20.         IndexReader reader = IndexReader.open(directory);   
  21.         System.out.println(reader);  
  22.         //Exception in thread "main" org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.SimpleFSDirectory@C:\ lockFactory=org.apache.lucene.store.NativeFSLockFactory@15a8767: files: [bootmgr, BOOTSECT.BAK, pagefile.sys, write.lock]  
  23.         // at  
  24.         // org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:711)  
  25.         // at  
  26.         // org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)  
  27.         // at org.apache.lucene.index.IndexReader.open(IndexReader.java:428)  
  28.         // at org.apache.lucene.index.IndexReader.open(IndexReader.java:274)  
  29.         // at com.zyb.solrQuery.X.main(X.java:39)  
  30.     }  
  31. }  

相关推荐