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

987 ワード

詳細
以上の異常が発生しました.原因:
       
 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);
				}

 
--索引ディレクトリの下にファイルがあるかどうかを検索します.ある場合は索引が作成されていることを示し、ない場合は索引を新規作成します.