我正在使用Apache Lucene 5.0.0,我遇到的问题是,经过一段时间/某些"事务"后,索引似乎已损坏,我得到以下异常:
org.apache.lucene.index.IndexFormatTooOldException: Format version is not supported (resource BufferedChecksumIndexInput(NIOFSIndexInput(path="/opt/xyz/index/1/index/segments_5b"))): -911482135 (needs to be between 1071082519 and 1071082519). This version of Lucene only supports indexes created with release 4.0 and later.
at org.apache.lucene.index.SegmentInfos.readCommit(SegmentInfos.java:288) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:53) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
at org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:50) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:642) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
at org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:50) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63) ~[lucene-core-5.0.0.jar:5.0.0 1659987 - anshumgupta - 2015-02-15 12:20:03]
Run Code Online (Sandbox Code Playgroud)
这里是我用来执行搜索和索引操作的代码片段:
搜索:
Directory directory = getIndexDirectory();
IndexReader indexReader = DirectoryReader.open(directory);
IndexSearcher is = new IndexSearcher(indexReader);
...
private Directory getDirectory() throws Exception {
final File dir = new File(...);
return FSDirectory.open(dir.toPath());
}
Run Code Online (Sandbox Code Playgroud)
对于索引,我使用以下方法获取索引编写器,将参数传递给同一目录:
private IndexWriter getIndexWriter(final Directory directory) throws Exception {
return new IndexWriter(directory, getIndexWriterConfig());
}
private IndexWriterConfig getIndexWriterConfig() {
final IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
config.setOpenMode(OpenMode.CREATE_OR_APPEND);
return config;
}
Run Code Online (Sandbox Code Playgroud)
当我从头创建索引并执行所有文档的重新索引时,搜索工作正常.我可以向索引添加新文档和/或删除现有文档,搜索继续有效.但是过了一会儿(我无法理解问题的"触发器")搜索停止工作,我得到了这个IndexFormatTooOldException.
你知道这个问题可能是什么原因吗?
谢谢你的帮助!
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |