これは非常にクリーンな解決策ではありませんが、それは私がSegmentInfosで見つけることができるすべてです。
LuceneVersion - >このために使用されたのLuceneコードバージョンコミット、 3 VINTとして書かれた:あなたは
を作成するとバグ修正、マイナー、主要なあなた
IndexReader
、それが具体的なリーダー・クラスの1つです -
StandardDirectoryReaderのように、このクラスは、
toString()
メソッドを持っています。このメソッドは、各セグメントにluceneバージョンを出力していますので、
IndexReader
インスタンスで -
toString()
を呼び出すだけです。
@Override public String toString() { final StringBuilder buffer = new StringBuilder(); buffer.append(getClass().getSimpleName()); buffer.append('('); final String segmentsFile = segmentInfos.getSegmentsFileName(); if (segmentsFile != null) { buffer.append(segmentsFile).append(":").append(segmentInfos.getVersion()); } if (writer != null) { buffer.append(":nrt"); } for (final LeafReader r : getSequentialSubReaders()) { buffer.append(' '); buffer.append(r); } buffer.append(')'); return buffer.toString(); }
私は、インデックスがあまりにも前のバージョンの作家からのコミット文書を持っている可能性があるため、全体のインデックスのための単一のバージョンは意味がないと思います。
旧式のルーセンバージョンライターでコミットされたドキュメントは、最新バージョンのリーダーを使用して検索することができます。
コアJavaの簡単なロジックをregexを使って書くと、最高のluceneバージョンをluceneインデックスバージョンとして抽出できます。