Zend_Search_Lucene-Overview.xml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <sect1 id="zend.search.lucene.overview">
  2. <title>Visão Geral</title>
  3. <sect2 id="zend.search.lucene.introduction">
  4. <title>Introdução</title>
  5. <para>Zend_Search_Lucene é um mecanismo para pesquisa de texto, de
  6. propósito geral, escrito totalmente em PHP 5. Por armazenar os
  7. índices no sistema de arquivos e não fazer uso de servidor de banco de
  8. dados, ele pode efetuar pesquisas em qualquer website rodando php.
  9. O Zend_Search_Lucene possui os seguintes recursos: <itemizedlist>
  10. <listitem>
  11. <para>Pesquisa agrupada por pontuação (ranked) - os resultados mais
  12. prováveis são retornados primeiro</para>
  13. </listitem>
  14. <listitem>
  15. <para>Consultas poderosas de diversos tipos: frase, curingas,
  16. aproximação, faixas e muito mais<footnote>
  17. <para>Por enquanto, apenas as consultas por termo e termos
  18. múltiplos são suportadas.</para>
  19. </footnote></para>
  20. </listitem>
  21. <listitem>
  22. <para>Busca por campo específico (ex: título, autor,
  23. descrição)</para>
  24. </listitem>
  25. </itemizedlist> Zend_Search_Lucene derivou do projeto Apache Lucene.
  26. Para mais informações, visite <ulink
  27. url="http://lucene.apache.org/java/docs/"></ulink>.</para>
  28. </sect2>
  29. <sect2 id="zend.search.lucene.index-creation.documents-and-fields">
  30. <title>Objetos Documento e Campo</title>
  31. <para>Zend_Search_Lucene trabalha sobre os documentos subdividindo-os em
  32. pequenas operações (atômicas) de indexação. Um documento é dividido em
  33. campos identificados cujo conteúdo é pesquisado.</para>
  34. <para>Um documento é representado por um objeto da classe
  35. Zend_Search_Lucene_Document, que por sua vez contém objetos da classe
  36. Zend_Search_Lucene_Field que representam os campos.</para>
  37. <para>O que é importante ressaltar é que qualquer tipo de informação pode
  38. ser adicionada a um índice. Informações específicas de aplicações ou
  39. metadados podem ser armazenados em campos de um documento, e
  40. posteriormente recuperados juntamente com o documento durante uma
  41. pesquisa.</para>
  42. <para>Controlar o indexador é responsabilidade de sua aplicação. Este
  43. recurso garante que os dados possam ser indexados a partir de qualquer
  44. fonte que seja acessível à sua aplicação. Por exemplo, um sistema de
  45. arquivos, um banco de dados, um formulário HTML, etc.</para>
  46. <para><code>A classe Zend_Search_Lucene_Field</code> provê alguns métodos
  47. estáticos para criação de campos com diferentes características:</para>
  48. <programlisting role="php">&lt;?php
  49. $doc = new Zend_Search_Lucene_Document();
  50. // Field is not tokenized, but is indexed and stored within the index.
  51. // Stored fields can be retrived from the index.
  52. $doc-&gt;addField(Zend_Search_Lucene_Field::Keyword('doctype',
  53. 'autogenerated'));
  54. // Field is not tokenized nor indexed, but is stored in the index.
  55. $doc-&gt;addField(Zend_Search_Lucene_Field::UnIndexed('created',
  56. time()));
  57. // Binary String valued Field that is not tokenized nor indexed,
  58. // but is stored in the index.
  59. $doc-&gt;addField(Zend_Search_Lucene_Field::Binary('icon',
  60. $iconData));
  61. // Field is tokenized and indexed, and is stored in the index.
  62. $doc-&gt;addField(Zend_Search_Lucene_Field::Text('annotation',
  63. 'Document annotation text'));
  64. // Field is tokenized and indexed, but that is not stored in the index.
  65. $doc-&gt;addField(Zend_Search_Lucene_Field::UnStored('contents',
  66. 'My document content'));
  67. ?&gt;</programlisting>
  68. <para>Você pode dar nome aos campos de acordo com a sua preferência. Um
  69. campo chamado "contents" pode ser usado para a pesquisa "default". É uma
  70. boa prática colocar os dados principais do documento em um campo com este
  71. nome.</para>
  72. </sect2>
  73. <sect2 id="zend.search.lucene.index-creation.understanding-field-types">
  74. <title>Entendendo os tipos de campos</title>
  75. <itemizedlist>
  76. <listitem>
  77. <para>Campos do tipo <code>Keyword</code> são armazenados e indexados
  78. ***fields are stored and indexed***, meaning they can be searched as
  79. well as displayed them back in search results. They are not split up
  80. into seperate words by tokenization. Enumerated database fields
  81. usually translate well to Keyword fields in Zend_Search_Lucene.</para>
  82. </listitem>
  83. <listitem>
  84. <para>Campos do tipo <code>UnIndexed</code> não são pesquisáveis, mas
  85. são retornados junto com os resultados das pesquisas. Database
  86. timestamps, chaves primárias, caminhos do sistema de arquivos, e
  87. outros identificadores externos são bons candidatos para campos
  88. UnIndexed.</para>
  89. </listitem>
  90. <listitem>
  91. <para>Campos do tipo <code>Binary</code> não são avaliados nem
  92. indexados, mas são armazenados para serem retornados em resultados de
  93. pesquisas. Eles podem ser usados para armazenar qulaquer tipo de dado
  94. que possa ser codificados em uma string binária, por exemplo, um
  95. ícone.</para>
  96. </listitem>
  97. <listitem>
  98. <para>Campos do tipo <code>Text</code> são armazenados, indexados e
  99. avaliados. Campos texto são apropriados para conter informações que
  100. devam ser pesquisadas, bem como retornadas por uma pesquisa, tais como
  101. descrições e títulos.</para>
  102. </listitem>
  103. <listitem>
  104. <para>Campos do tipo <code>UnStored</code> são avaliados e indexados,
  105. mas não são armazenados no índice. Grandes quantidades de texto são
  106. melhor indexadas utilizando este tipo de campo. Dados armazenados
  107. criam um extenso índice no disco, então se você necessitar pesquisar
  108. sem exibir estes dados, utilize um campo UnStored. Campos UnStored são
  109. úteis quando utilizamos um índice Zend_Search_Lucene em combinação com
  110. um banco de dados relacional. Você pode indexar campos contendo dados
  111. volumosos usando campos UnStored para pesquisa, e recuperá-los a
  112. partir de um banco de dados relacional usando campos separados como
  113. identificadores.</para>
  114. <table>
  115. <title>Campos Zend_Search_Lucene_Field </title>
  116. <tgroup cols="5">
  117. <thead>
  118. <row>
  119. <entry>Tipo de Campo</entry>
  120. <entry>Armazenado</entry>
  121. <entry>Indexado</entry>
  122. <entry>Tokenizado</entry>
  123. <entry>Binário</entry>
  124. </row>
  125. </thead>
  126. <tbody>
  127. <row>
  128. <entry>Keyword</entry>
  129. <entry>Sim</entry>
  130. <entry>Sim</entry>
  131. <entry>Não</entry>
  132. <entry>Não</entry>
  133. </row>
  134. <row>
  135. <entry>UnIndexed</entry>
  136. <entry>Sim</entry>
  137. <entry>Não</entry>
  138. <entry>Não</entry>
  139. <entry>Não</entry>
  140. </row>
  141. <row>
  142. <entry>Binary</entry>
  143. <entry>Sim</entry>
  144. <entry>Não</entry>
  145. <entry>Não</entry>
  146. <entry>Sim</entry>
  147. </row>
  148. <row>
  149. <entry>Text</entry>
  150. <entry>Sim</entry>
  151. <entry>Sim</entry>
  152. <entry>Sim</entry>
  153. <entry>Não</entry>
  154. </row>
  155. <row>
  156. <entry>UnStored</entry>
  157. <entry>Não</entry>
  158. <entry>Sim</entry>
  159. <entry>Sim</entry>
  160. <entry>Não</entry>
  161. </row>
  162. </tbody>
  163. </tgroup>
  164. </table>
  165. </listitem>
  166. </itemizedlist>
  167. </sect2>
  168. </sect1>
  169. <!--
  170. vim:se ts=4 sw=4 et:
  171. -->