Lucene 2.2.xを使用している既存のソフトウェアがあり、3.1にアップグレードする必要があります。このアップグレードを行うには、まず2.9.xにアップグレードすることを提案する文書を読み、すべての廃止予定の警告を削除してから3.1.xにアップグレードしてください。既存のインデックスを展開して、コードとの互換性を保つ必要があります。2.2から2.9へのLuceneのアップグレードに関する質問
私の主な質問は、日付の処理に関するものです。 2.2.xでは、Date.getTime()をインデックス化して格納できる文字列に変換するためにDateTools.dateToString()を使用する必要がありました。私はすべての文書に2つのフィールドを作成しました。時間分解能で保存された検索用のものと、分析されなかったその他のフィールド。現在、Lucene 2.9.xは文字列以外のさまざまなデータ型をサポートしています。 DateToolsを使用して日付を文字列に変換した以前のバージョンに対して、これらの新しい型をRangeQueriesで使用できますか?ここで私は、あまりにもそれをコードに変更されます。
前:
return new RangeFilter("dateArchived-stored",
DateTools.dateToString(start, DateTools.Resolution.MILLISECOND),
DateTools.dateToString(end, DateTools.Resolution.MILLISECOND),
false, true);
後:Luceneのは非文字列のデータ・タイプは、我々は日付の解像度を気にする必要がありますサポートしていることを今
return NumericRangeFilter.newLongRange("dateArchived-stored",
start.getTime(),
end.getTime(), true, true);
タームクエリで行ったのと同じですか?
IndexWriterはMaxFieldLimitを宣言する必要があります。以前のバージョンはそうしなかった。 UNLIMITEDは以前のバージョンと同じ動作をしていますか?私が読んでいるインデックスが2.2で作成されていることを考えれば、無制限を使用するのが最も安全ですか?
new IndexWriter(indexDirectory, analyzer)
後:前
new IndexWriter(FSDirectory.open(indexDirectory), analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED)
ソートオブジェクトは、そのフィールドのタイプを必要とするSortField宣言を必要とします。 2.2.xバージョンでインデックスされた既存のフィールドでは、以前にStringとしてインデックス付けされたフィールドを別の型に宣言できますか、または常にSortField.STRINGである必要がありますか?後
new Sort("timestamp", false)
::前
new Sort(new SortField("timestamp", SortField.LONG, false))
は、インデックスを持つこの作品は2.2.xのに建てられたが、2.9.xで読みますか?
最後に、2.2.xで作成されたインデックスを使用して3.1.xにまっすぐ進む問題はありますか?私は私のローカルのdevシステムで2.9.xへの移行を行っていますが、現場では2.2.xから3.1.xに移行します。 2.9.xを使用してバージョンをリリースする必要がありますか?