0

コンテンツをバージョン3.6から4.1にインデックス付けするためにLuceneエンジンをアップグレードしている最中です。APIの一部のパーティが大幅に変更されていることに気づきました。

特に、SegmentInfosクラスの静的定数に関しては...

私の古いコードは、破損したインデックスを検出するために次のコードを使用しています。存在する場合は、Luceneバイナリファイルを削除します。

for (String name : fileNames) {
    if (name != null && name.startsWith("segments_")) {
        IndexInput input = dir.openInput(name);
        int format = input.readInt();
        input.close();
        if (format != SegmentInfos.FORMAT_DIAGNOSTICS) {
            LOG.info(String.format("File %s is corrupted and it will be deleted", name));
            dir.deleteFile(name);
            }
        }
    }

残念ながら、Luceneの4.1バージョンの静的定数SegmentInfos.FORMAT_DIAGNOSTICSはなくなり、一部のインデックスが破損しているかどうかを認識する方法がわかりません...

4

1 に答える 1

0

Lucene 4には、下位互換性のない変更がかなりあります。これが、メジャーバージョンが変更された主な理由です。

ただし、手動で行っていることを確認するには、インデックスチェックツールを確認することをお勧めします。これにより、インデックスの状態を確認し、オプションで壊れたセグメントを削除できます。ツール自体を使用できない場合は、少なくともそのコードを見て、アプリケーションに統合する方法を確認できます。

于 2013-03-20T09:25:47.963 に答える