Zend_Search_Lucene-IndexCreation.xml 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <sect1 id="zend.search.lucene.index-creation">
  2. <title>Construindo Índices</title>
  3. <sect2 id="zend.search.lucene.index-creation.creating">
  4. <title>Criando um Novo Índice</title>
  5. <para>As funcionalidades de criação e atualização de índices são
  6. implementadas tanto pelo módulo Zend_Search_Lucene quanto pelo Java
  7. Lucene. Você pode usar ambas as funcionalidades.</para>
  8. <para>O código PHP abaixo mostra um exemplo de como indexar um arquivo
  9. usando a API de indexação do Zend_Search_Lucene:</para>
  10. <programlisting role="php">&lt;?php
  11. // Setting the second argument to TRUE creates a new index
  12. $index = new Zend_Search_Lucene('/data/my-index', true);
  13. $doc = new Zend_Search_Lucene_Document();
  14. // Store document URL to identify it in search result.
  15. $doc-&gt;addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
  16. // Index document content
  17. $doc-&gt;addField(Zend_Search_Lucene_Field::UnStored('contents', $docContent));
  18. // Add document to the index.
  19. $index-&gt;addDocument($doc);
  20. // Write changes to the index.
  21. $index-&gt;commit();
  22. ?&gt;</programlisting>
  23. <para>Documentos adicionados recentemente devem ser pesquisados no índice
  24. somente após um "commit" ter sido executado.</para>
  25. <para>O método <code>Zend_Search_Lucene::commit()</code> é chamado
  26. automaticamente ao final da execução do script e antes de qualquer
  27. operação de busca.</para>
  28. <para>Cada chamada a método commit() gera um novo segmento de índice. Ele
  29. deve ser usado raramente, se possível. Observe também que executar
  30. "commit" em uma grande quantidade de documentos, em um único passo,
  31. consome mais memória.</para>
  32. <para>O gerenciamento e a otimização de segmentos de forma automatica é um
  33. assunto para ser tratado em futuros aprimoramentos do módulo
  34. Zend_Search_Lucene.</para>
  35. </sect2>
  36. <sect2 id="zend.search.lucene.index-creation.updating">
  37. <title>Atualizando um Índice</title>
  38. <para>O mesmo procedimento é empregado para atualizar um índice existente.
  39. A única diferença é que o índice deverá ser aberto sem o segundo
  40. parâmetro:</para>
  41. <programlisting role="php">&lt;?php
  42. // Open existing index
  43. $index = new Zend_Search_Lucene('/data/my-index');
  44. $doc = new Zend_Search_Lucene_Document();
  45. // Store document URL to identify it in search result.
  46. $doc-&gt;addField(Zend_Search_Lucene_Field::Text('url', $docUrl));
  47. // Index document content
  48. $doc-&gt;addField(Zend_Search_Lucene_Field::UnStored('contents', $docContent));
  49. // Add document to the index.
  50. $index-&gt;addDocument($doc);
  51. // Write changes to the index.
  52. $index-&gt;commit();
  53. ?&gt;</programlisting>
  54. <para>Cada chamada a commit() (explícita ou implícita) gera um novo
  55. segmento de índice.</para>
  56. <para>Zend_Search_Lucene não gerencia segmentos automaticamente. Então é
  57. tarefa do programador observar o tamanho dos segmentos. De um lado,
  58. segmentos grandes são mais otimizados, mas por outro, eles consomem mais
  59. memória durante sua criação.</para>
  60. <para>Lucene Java e Luke (Lucene Index Toolbox - <ulink
  61. url="http://www.getopt.org/luke/">http://www.getopt.org/luke/</ulink>)
  62. podem ser usados para otimizar índices juntamente com esta versão do
  63. Zend_Search_Lucene.</para>
  64. </sect2>
  65. </sect1>
  66. <!--
  67. vim:se ts=4 sw=4 et:
  68. -->