2011-09-12 5 views
14

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を使用してバージョンをリリースする必要がありますか?

答えて

1

「UNLIMITEDを使用するのが最も安全ですか?はい。そのオプションは既に作成されたドキュメントとは関係ありません。

文字列フィールドを使用している場合は、数値フィールドを使用できません。これはあなた自身で確認できます。

関連する問題