lucene 索引出错 no segments* file found in org.apache.lucene.store.MMapDirectory

来源:互联网 发布:javascript div 只读 编辑:程序博客网 时间:2024/05/17 21:58

创建第一个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 blocke.printStackTrace();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {//IndexerWriter写索引操作关闭,提交写索引(如没关闭会造成索引无法完整创建,查询时出错)indexer.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}long end = System.currentTimeMillis();System.out.println("\n Indexing " + numIndexed + " files took "+ (end - start) + "milliseconds");}


0 0