无法加载名为meta index的索引结构

时间:2014-03-06 15:37:07

标签: information-retrieval inverted-index

当我使用terrier 3.5为集合构建反向索引时。 首先,我使用“./bin/trec_setup.sh var / corpus” 其次,我使用“./bin/trec_terrier.sh -i -j”,但是出现了无法加载名为元索引的索引结构的错误。

Setting TERRIER_HOME to /home/mao/Desktop/terrier-3.5
INFO - TRECCollection read collection specification (1 files)
INFO - Processing var/collection/sogou/sogou
INFO - Structure meta reading lookup file into memory
INFO - Structure meta reading reverse map for key docno directly from disk
ERROR - Couldn't load an index structure called meta
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.terrier.structures.Index.loadIndexStructure(Index.java:421)
    at org.terrier.structures.Index.getIndexStructure(Index.java:330)
    at org.terrier.structures.Index.loadIndices(Index.java:252)
    at org.terrier.structures.Index.<init>(Index.java:189)
    at org.terrier.structures.Index.createIndex(Index.java:659)
    at org.terrier.applications.TRECIndexing.createSinglePass(TRECIndexing.java:204)
    at org.terrier.applications.TrecTerrier.run(TrecTerrier.java:382)
    at org.terrier.applications.TrecTerrier.applyOptions(TrecTerrier.java:564)
    at org.terrier.applications.TrecTerrier.main(TrecTerrier.java:235)
Caused by: java.io.FileNotFoundException: /home/mao/Desktop/terrier-3.5/var/index/data.meta-0.fsomapfile (No such file or directory)
    at java.io.RandomAccessFile.open(Native Method)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:241)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:122)
    at org.terrier.utility.io.LocalFileSystem$LocalRandomAccessFile.<init>(LocalFileSystem.java:54)
    at org.terrier.utility.io.LocalFileSystem.openFileRandom(LocalFileSystem.java:116)
    at org.terrier.utility.Files.openFileRandom(Files.java:354)
    at org.terrier.structures.collections.FSOrderedMapFile.<init>(FSOrderedMapFile.java:571)
    at org.terrier.structures.CompressingMetaIndex.loadIndex(CompressingMetaIndex.java:1194)
    at org.terrier.structures.CompressingMetaIndex.<init>(CompressingMetaIndex.java:835)
    ... 13 more
A problem occurred: java.lang.NullPointerException
java.lang.NullPointerException
    at org.terrier.applications.TRECIndexing.createSinglePass(TRECIndexing.java:205)
    at org.terrier.applications.TrecTerrier.run(TrecTerrier.java:382)
    at org.terrier.applications.TrecTerrier.applyOptions(TrecTerrier.java:564)
    at org.terrier.applications.TrecTerrier.main(TrecTerrier.java:235)
mao@ubuntu:~/Desktop/terrier-3.5$ ./bin/trec_terrier.sh --printmeta
Setting TERRIER_HOME to /home/mao/Desktop/terrier-3.5
ERROR - Couldn't load an index structure called meta-inputstream
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.terrier.structures.Index.loadIndexStructure(Index.java:421)
    at org.terrier.structures.Index.getIndexStructureInputStream(Index.java:449)
    at org.terrier.structures.IndexUtil.printMetaIndex(IndexUtil.java:328)
    at org.terrier.applications.TrecTerrier.run(TrecTerrier.java:412)
    at org.terrier.applications.TrecTerrier.applyOptions(TrecTerrier.java:564)
    at org.terrier.applications.TrecTerrier.main(TrecTerrier.java:235)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:197)
    at java.io.DataInputStream.readLong(DataInputStream.java:416)
    at org.terrier.structures.CompressingMetaIndex$InputStream.<init>(CompressingMetaIndex.java:702)
    at org.terrier.structures.CompressingMetaIndex$InputStream.<init>(CompressingMetaIndex.java:730)
    ... 10 more
A problem occurred: java.lang.NullPointerException
java.lang.NullPointerException
    at org.terrier.structures.IndexUtil.printMetaIndex(IndexUtil.java:329)
    at org.terrier.applications.TrecTerrier.run(TrecTerrier.java:412)
    at org.terrier.applications.TrecTerrier.applyOptions(TrecTerrier.java:564)
    at org.terrier.applications.TrecTerrier.main(TrecTerrier.java:235)

1 个答案:

答案 0 :(得分:0)

当我遇到这种情况时,错误的原因是terrier文件夹中存在损坏的索引,这是因为我在没有先运行安装程序的情况下运行索引而创建的。

删除Terrier主目录中var / index子文件夹中的所有文件。

然后它可以正常工作。