创建第一个lucene索引后,搜索出错:
org.apache.lucene.index.IndexNotFoundException: no segments* file found in org.apache.lucene.store.MMapDirectory@H:\lucene lockFactory=org.apache.lucene.store.NativeFSLockFactory@487c9b46: files: [write.lock, _0.fdt, _0.fdx]
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:712)at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:75)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:462)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:308)
at lucene.Searcher.search(Searcher.java:26)
at lucene.Searcher.main(Searcher.java:49)
原因:
indexer创建完索引后没有关闭(提交)导致索引没有完整创建,导致搜索报错
注意如下说明:(index.close())
public static void main(String[] args) {
long start = System.currentTimeMillis();
Indexer indexer = null;
int numIndexed = 0;
try {
indexer = new Indexer(indexDir);
numIndexed = indexer.index(dataDir, new TextFilesFilter());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
//IndexerWriter写索引操作关闭,提交写索引(如没关闭会造成索引无法完整创建,查询时出错)
indexer.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
long end = System.currentTimeMillis();
System.out.println("\n Indexing " + numIndexed + " files took "
+ (end - start) + "milliseconds");
}