修复lucene 4.1 / solr损坏的索引

时间:2014-03-24 15:49:53

标签: solr lucene

我的Lucene索引 - 使用Lucene4.1使用Solr构建 - 我认为已损坏。在尝试使用以下代码读取索引时,我得到org.apache.solr.common.SolrException: No such core: collection1异常:

File configFile = new File(cacheFolder + File.separator + "solr.xml");
CoreContainer container = new CoreContainer(cacheFolder, configFile);
SolrServer server = new EmbeddedSolrServer(container, "collection1");
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("q", idFieldName + ":" + ClientUtils.escapeQueryChars(queryId));
params.set("fl",idFieldName+","+valueFieldName);

QueryResponse response = server.query(params)

我使用“checkindex”util来检查索引的完整性,似乎无法通过抛出以下错误来执行任务:

Opening index @ /....../solrindex_cache/zookeeper/solr/collection1/data/index

ERROR: could not read any segments file in directory
java.io.FileNotFoundException: /....../solrindex_cache/zookeeper/solr/collection1/data/index/segments_b5tb (No such file or directory)
    at java.io.RandomAccessFile.open(Native Method)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233)
    at org.apache.lucene.store.MMapDirectory.openInput(MMapDirectory.java:223)
    at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:285)
    at org.apache.lucene.index.SegmentInfos$1.doBody(SegmentInfos.java:347)
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:783)
    at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:630)
    at org.apache.lucene.index.SegmentInfos.read(SegmentInfos.java:343)
    at org.apache.lucene.index.CheckIndex.checkIndex(CheckIndex.java:383)
    at org.apache.lucene.index.CheckIndex.main(CheckIndex.java:1777)

索引检查器正在查找的文件segments_b5tb确实在索引文件夹中缺失。唯一看起来相似的文件是segments.gen

有没有办法诊断出错的地方,如果可能的话,通过各种方法修复它,因为我花了2个星期来构建这个索引......

非常感谢你的善意!

1 个答案:

答案 0 :(得分:1)

如果segments.gen文件是您看到的文件,则可能不方便,但除此之外,您可以尝试使用CheckIndex检查错误,并修复指数。由于该工具通过删除有问题的段来修复索引,因此可能会导致一些丢失的数据。