応用1.6 以降でサポートするインデックスフォーマット変換Zend_Search_Lucene コンポーネントは、Java Lucene 1.4-1.9、2.1 そして 2.3 形式のインデックスフォーマットに対応しています。
現在のインデックスフォーマットを知るには
インデックスの変更は、インデックスが更新されたときに のみ
行います。インデックスの更新が行われるのは、
新しいドキュメントがインデックスに追加された場合や
Zend_Search_Lucene が、インデックスを上位バージョンのフォーマットに変換することがあります。 Zend_Search_Lucene::FORMAT_PRE_2_1 フォーマットの場合はこれが 常に 起こり、 自動的に 2.1 フォーマットに変換されます。
変換作業を管理するために、対象となるインデックスフォーマットを
下位バージョンへの変換はサポートしていません。
静的プロパティとしてのインデックスの使用Zend_Search_Lucene オブジェクトは、 デストラクタメソッド内で変更のコミットやリソースの後始末を行います。
パラメータ
もし 静的オブジェクトプロパティ (以下を参照ください) は、 "スクリプトが最後まで実行された" 後で 破棄されます。
にもかかわらず、静的プロパティのオブジェクトのデストラクタは正常に起動し、 やるべきことをすべて行う可能性があります。 問題が起こる可能性があるとすれば、例外処理です。 静的オブジェクトのデストラクタでスローされた例外は、コンテキストを保持していません。 というのも、"スクリプトが最後まで実行された後" に実行されるものだからです。 おそらく、そのような場合は例外ではなく "Fatal error: Exception thrown without a stack frame in Unknown on line 0" のようなエラーメッセージが表示されるでしょう。 Zend_Search_Lucene は、この問題を commit() メソッドで処理できるようにしています。これは、未保存の変更内容をすべて保存し、 新しいセグメントを保存するために使用しているメモリを解放します。 コミット操作は、スクリプトの実行中にいつでも何度でも行うことができます。 Zend_Search_Lucene オブジェクトを使用して、 コミット操作の後にもドキュメントの検索や追加、削除ができます。 しかし commit() をコールすることで、 もしそれ以降ドキュメントの追加や削除が行われていないのなら Zend_Search_Lucene のデストラクタは何もせず、 例外もスローしないことが保証されます。
|