我的Lucene索引 - 使用Lucene4.1用Solr構建 - 我認爲是損壞的。在嘗試使用下面的代碼讀取索引我得到org.apache.solr.common.SolrException: No such core: collection1
例外:修復lucene 4.1 /索引損壞的索引
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個星期建立這個指數...
許多許多感謝您友好的建議!
ADD:通過搞亂它,我認爲它會變得更糟:由於索引可能已損壞,當我再次測試時,它似乎重新創建了「segment.gen」文件,並且還重新創建了這些段文件(即si,tip,doc,fdx等文件)。然後我立即退出該程序,以避免所有文件丟失。但是現在看起來索引與這些段文件是完全分開的,即使它們在物理上存在。我想這更加複雜,但是有什麼辦法可以解決這個問題嗎? – Ziqi
您是否嘗試運行[fixIndex](http://lucene.apache.org/core/4_7_0/core/org/apache/lucene/index/CheckIndex.html#fixIndex%28org.apache.lucene.index.CheckIndex .Status%29)CheckIndex的方法? – cheffe