no segments* file found in org.apache.lucene.store.FSDirectory

遇到以上异常,原因:

       

 writer = new IndexWriter(indexPath, getAnalyzer(),
                 true, IndexWriter.MaxFieldLength.UNLIMITED);

 

其中"true"为在indexPath 目录下不新建索引而使用原来的索引,在第一次建立索引时会遇到"no segments* file found in org.apache.lucene.store.FSDirectory" 的异常。因为还没有在该目录建立任何索引文件。

解决方案:

目前想到这个解决方案,还没想到更好的:

File file = new File(indexPath);
				//如果目录下没有文件,则新建索引文件
				if(file.isDirectory() && file.listFiles().length == 0){
					writer = new IndexWriter(indexPath, getAnalyzer(),
							true, IndexWriter.MaxFieldLength.UNLIMITED);
				} else {
					//如果已有索引文件则用原有的索引文件
					writer = new IndexWriter(indexPath, getAnalyzer(),
							false, IndexWriter.MaxFieldLength.UNLIMITED);
				}

 

-- 查找索引目录下有没有文件,如果有则表示已经建立了索引,如果没有则新建索引。

你可能感兴趣的:(apache,Lucene)