[ZF-10089] Zend_Log
[zend.git] / documentation / manual / zh / module_specs / Zend_Search_Lucene-IndexCreation.xml
blobc8c5a700051db30988766dfe5e076ccb652591f0
1 <sect1 id="zend.search.lucene.index-creation">
2     <title>建立索引</title>
4     <sect2 id="zend.search.lucene.index-creation.creating">
5         <title>创建新索引</title>
7         <para>
8             在 Zend_Search_Lucene 模块和 Java Lucene 中实现了索引的创建和更新机制。你都可以使用。
9         </para>
11         <para>
12             下面的 PHP 代码提供了一个如何使用 Zend_Search_Lucene 索引 API 的例子:
13         </para>
15         <programlisting role="php"><![CDATA[<?php
17 // Setting the second argument to TRUE creates a new index
18 $index = new Zend_Search_Lucene('/data/my-index', true);
20 $doc = new Zend_Search_Lucene_Document();
22 // Store document URL to identify it in search result.
23 $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
25 // Index document content
26 $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $docContent));
28 // Add document to the index.
29 $index->addDocument($doc);
31 // Write changes to the index.
32 $index->commit();
33 ?>]]></programlisting>
35         <para>
36             在进行了 commit 提交操作之后,新添加的文档就可以被检索了。
37         </para>
38         <para>
39             <code>Zend_Search_Lucene::commit()</code> 会在脚本执行结束前以及任意搜索请求开始之前被自动调用。
40         </para>
41         <para>
42             每一次 commit() 调用产生新的索引分段。因此尽可能少的请求它。当然另一方面,在一步中提交大量的文档需要更多的内存。
43         </para>
44         <para>
45             字段分段管理优化是 Zend_Search_Lucene 未来要增强的内容。
46         </para>
47     </sect2>
49     <sect2 id="zend.search.lucene.index-creation.updating">
50         <title>更新索引</title>
52         <para>
53             同样的过程可以用于更新现存的索引。唯一的区别是打开相应的索引是不需要第二个参数:
54         </para>
56         <programlisting role="php"><![CDATA[<?php
58 // Open existing index
59 $index = new Zend_Search_Lucene('/data/my-index');
61 $doc = new Zend_Search_Lucene_Document();
62 // Store document URL to identify it in search result.
63 $doc->addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
64 // Index document content
65 $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $docContent));
67 // Add document to the index.
68 $index->addDocument($doc);
70 // Write changes to the index.
71 $index->commit();
72 ?>]]></programlisting>
74         <para>
75             每一次 commit() 调用(显式的或者隐式的)产生新的索引分段。
76         </para>
77         <para>
78             Zend_Search_Lucene 不会自动管理分段。因此你应该关注分段的大小。一方面一个大的分段可能更加理想,另一方面在创建时需要更大的内存。
79         </para>
80         <para>
81             Lucene Java 和 Luke (Lucene Index Toolbox - <ulink url="http://www.getopt.org/luke/">http://www.getopt.org/luke/</ulink>)可以用于优化这个版本的 Zend_Search_Lucene 产生的索引。
82         </para>
83     </sect2>
84 </sect1>
86 <!--
87 vim:se ts=4 sw=4 et:
88 -->