2017-05-24 12 views
2

私はluceneインデックスのバージョンを決定し、それに基づいてインデックスを次のバージョンにアップグレードする必要があるシェルスクリプト(csh)を作成しています。 ルーキンインデックスが2.xの場合、インデックスを3.xにアップグレードする必要があります 最後にインデックスを6.xにアップグレードする必要があります。luceneインデックスのバージョンを確認する方法は?

インデックスのアップグレードは、順次プロセス(2.x-> 3.x-> 4.x-> 5.x-> 6.x)なので、前もってインデックスバージョンを知っておく必要がありますクラスパスを正しく設定してアップグレードしてください。

私にこれを手伝ってください。

答えて

0

これは非常にクリーンな解決策ではありませんが、それは私が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インデックスバージョンとして抽出できます。

関連する問題