[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Search_Lucene-Advanced.xml
blob4b3095610ff9d2bc294481d2eff4f958c040c8df
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20854 -->
4 <sect1 id="zend.search.lucene.advanced">
5     <title>応用</title>
7     <sect2 id="zend.search.lucene.advanced.format_migration">
8         <title>1.6 以降でサポートするインデックスフォーマット変換</title>
10         <para>
11             <classname>Zend_Search_Lucene</classname> コンポーネントは、Java Lucene 1.4-1.9、2.1 そして 2.3
12             形式のインデックスフォーマットに対応しています。
13         </para>
15         <para>
16             現在のインデックスフォーマットを知るには <code>$index->getFormatVersion()</code>
17             を使用します。これは、次のいずれかの値を返します。
18             <itemizedlist>
19                 <listitem>
20                     <para>
21                         <constant>Zend_Search_Lucene::FORMAT_PRE_2_1</constant> は
22                         Java Lucene 1.4-1.9 のインデックスフォーマットを表します。
23                     </para>
24                 </listitem>
25                 <listitem>
26                     <para>
27                         <constant>Zend_Search_Lucene::FORMAT_2_1</constant> は
28                         Java Lucene 2.1 のインデックスフォーマット
29                         (Lucene 2.2 でも使用可能) を表します。
30                     </para>
31                 </listitem>
32                 <listitem>
33                     <para>
34                         <constant>Zend_Search_Lucene::FORMAT_2_3</constant> は
35                         Java Lucene 2.3 のインデックスフォーマットを表します。
36                     </para>
37                 </listitem>
38             </itemizedlist>
39         </para>
41         <para>
42             インデックスの変更は、インデックスが更新されたときに <emphasis>のみ</emphasis>
43             行います。インデックスの更新が行われるのは、
44             新しいドキュメントがインデックスに追加された場合や
45             <code>$index->optimize()</code> による最適化を手動で開始した場合です。
46         </para>
48         <para>
49             <classname>Zend_Search_Lucene</classname> が、インデックスを上位バージョンのフォーマットに変換することがあります。
50             <constant>Zend_Search_Lucene::FORMAT_PRE_2_1</constant> フォーマットの場合はこれが
51             <emphasis>常に</emphasis> 起こり、
52             自動的に 2.1 フォーマットに変換されます。
53         </para>
55         <para>
56             変換作業を管理するために、対象となるインデックスフォーマットを
57             <code>$index->setFormatVersion()</code> で指定できます。ここでは定数
58             <constant>Zend_Search_Lucene::FORMAT_2_1</constant> あるいは <constant>Zend_Search_Lucene::FORMAT_2_3</constant>
59             をパラメータとして使用します。
60             <itemizedlist>
61                 <listitem>
62                     <para>
63                         <constant>Zend_Search_Lucene::FORMAT_2_1</constant> は実際には何もしません。
64                         2.1 より前のバージョンのインデックスは自動的に
65                         2.1 フォーマットに変換されるからです。
66                     </para>
67                 </listitem>
68                 <listitem>
69                     <para>
70                         <constant>Zend_Search_Lucene::FORMAT_2_3</constant>
71                         は、強制的に 2.3 フォーマットへの変換を行います。
72                     </para>
73                 </listitem>
74             </itemizedlist>
75         </para>
77         <para>
78             下位バージョンへの変換はサポートしていません。
79         </para>
81         <note>
82             <title>重要!</title>
83             <para>
84                 一度インデックスを上位バージョンに変換してしまうと、
85                 元に戻すことはできません。
86                 上位バージョンに変換したいけれど元に戻す可能性も残しておきたいという場合は、
87                 インデックスのバックアップを取得しておきましょう。
88             </para>
89         </note>
91     </sect2>
93     <sect2 id="zend.search.lucene.advanced.static">
94         <title>静的プロパティとしてのインデックスの使用</title>
96         <para>
97             <classname>Zend_Search_Lucene</classname> オブジェクトは、
98             デストラクタメソッド内で変更のコミットやリソースの後始末を行います。
99         </para>
101         <para>
102             パラメータ <code>MaxBufferedDocs</code>
103             の内容に応じて、メモリ内に追加されたドキュメントを保存したり
104             新しいインデックスセグメントをディスクに書き出したりします。
105         </para>
107         <para>
108             もし <code>MaxBufferedDocs</code> の制限に達していない場合は "保存されていない"
109             ドキュメントが残ってしまい、
110             これがオブジェクトのデストラクタで新しいセグメントとして保存されます。
111             インデックスの自動最適化は、
112             <code>MaxBufferedDocs</code>、<code>MaxMergeDocs</code> および
113             <code>MergeFactor</code> の設定内容により、必要に応じて行われます。
114         </para>
116         <para>
117             静的オブジェクトプロパティ (以下を参照ください) は、
118             "スクリプトが最後まで実行された" <emphasis>後で</emphasis> 破棄されます。
120             <programlisting language="php"><![CDATA[
121 class Searcher {
122     private static $_index;
124     public static function initIndex() {
125         self::$_index = Zend_Search_Lucene::open('path/to/index');
126     }
129 Searcher::initIndex();
130 ]]></programlisting>
131         </para>
133         <para>
134             にもかかわらず、静的プロパティのオブジェクトのデストラクタは正常に起動し、
135             やるべきことをすべて行う可能性があります。
136         </para>
138         <para>
139             問題が起こる可能性があるとすれば、例外処理です。
140             静的オブジェクトのデストラクタでスローされた例外は、コンテキストを保持していません。
141             というのも、"スクリプトが最後まで実行された後" に実行されるものだからです。
142         </para>
144         <para>
145             おそらく、そのような場合は例外ではなく
146             "Fatal error: Exception thrown without a stack frame in Unknown on line 0"
147             のようなエラーメッセージが表示されるでしょう。
148         </para>
150         <para>
151             <classname>Zend_Search_Lucene</classname> は、この問題を <methodname>commit()</methodname>
152             メソッドで処理できるようにしています。これは、未保存の変更内容をすべて保存し、
153             新しいセグメントを保存するために使用しているメモリを解放します。
154             コミット操作は、スクリプトの実行中にいつでも何度でも行うことができます。
155             <classname>Zend_Search_Lucene</classname> オブジェクトを使用して、
156             コミット操作の後にもドキュメントの検索や追加、削除ができます。
157             しかし <methodname>commit()</methodname> をコールすることで、
158             もしそれ以降ドキュメントの追加や削除が行われていないのなら
159             <classname>Zend_Search_Lucene</classname> のデストラクタは何もせず、
160             例外もスローしないことが保証されます。
162             <programlisting language="php"><![CDATA[
163 class Searcher {
164     private static $_index;
166     public static function initIndex() {
167         self::$_index = Zend_Search_Lucene::open('path/to/index');
168     }
170     ...
172     public static function commit() {
173         self::$_index->commit();
174     }
177 Searcher::initIndex();
181 // スクリプトの終了処理
183 Searcher::commit();
185 ]]></programlisting>
186         </para>
187     </sect2>
188 </sect1>