|
|
@@ -1,5 +1,5 @@
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
-<!-- EN-Revision: 20115 -->
|
|
|
+<!-- EN-Revision: 20872 -->
|
|
|
<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.search.lucene.overview">
|
|
|
<title>Resumo</title>
|
|
|
@@ -13,6 +13,7 @@
|
|
|
índices no sistema de arquivos e não fazer uso de servidor de banco de dados, ele pode
|
|
|
efetuar pesquisas em qualquer website rodando <acronym>PHP</acronym>. O
|
|
|
<classname>Zend_Search_Lucene</classname> possui os seguintes recursos:
|
|
|
+
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
@@ -20,16 +21,16 @@
|
|
|
retornados primeiro
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Consultas poderosas de diversos tipos: frase, curingas, booleanas,
|
|
|
aproximação, faixas e muitas outras.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
- <para>
|
|
|
- Busca por campo específico (ex: título, autor, descrição)
|
|
|
- </para>
|
|
|
+ <para>Busca por campo específico (ex: título, autor, descrição)</para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
@@ -37,12 +38,15 @@
|
|
|
(iniciando do ZF 1.6), as versões suportadas formato de índice Lucene são 1.4 - 2.3.
|
|
|
Para mais informações, visite <ulink url="http://lucene.apache.org/java/docs/"/>.
|
|
|
</para>
|
|
|
+
|
|
|
<note>
|
|
|
<title/>
|
|
|
+
|
|
|
<para>
|
|
|
Implementações anteriores de <classname>Zend_Search_Lucene</classname> suportam os
|
|
|
formatos de índice Lucene 1.4 (1.9) - 2.1.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
A partir do Zend Framework 1.5, qualquer índice criado usando formato de índice
|
|
|
menor que 2.1 é atualizado automaticamente para o formato Lucene 2.1 após a
|
|
|
@@ -55,39 +59,40 @@
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.documents-and-fields">
|
|
|
<title>Objetos Documento e Campo</title>
|
|
|
- <para>
|
|
|
- <classname>Zend_Search_Lucene</classname> trabalha sobre os documentos
|
|
|
- subdividindo-os em pequenos objetos (atômicos) de indexação. Um documento é
|
|
|
- dividido em campos identificados cujo conteúdo é pesquisado.
|
|
|
- </para>
|
|
|
|
|
|
- <para>
|
|
|
- Um documento é representado pela classe
|
|
|
- <classname>Zend_Search_Lucene_Document</classname>, e os objetos dessa classe
|
|
|
- contêm instâncias de <classname>Zend_Search_Lucene_Field</classname> que
|
|
|
- representam os campos no documento.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Search_Lucene</classname> trabalha sobre os documentos
|
|
|
+ subdividindo-os em pequenos objetos (atômicos) de indexação. Um documento é
|
|
|
+ dividido em campos identificados cujo conteúdo é pesquisado.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- O que é importante ressaltar é que qualquer informação pode ser adicionada a um
|
|
|
- índice. Informações específicas de aplicações ou metadados podem ser armazenados em
|
|
|
- campos de um documento, e posteriormente recuperados juntamente com o documento
|
|
|
- durante uma pesquisa.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Um documento é representado pela classe
|
|
|
+ <classname>Zend_Search_Lucene_Document</classname>, e os objetos dessa classe
|
|
|
+ contêm instâncias de <classname>Zend_Search_Lucene_Field</classname> que
|
|
|
+ representam os campos no documento.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Controlar o indexador é responsabilidade de sua aplicação. Este recurso garante que
|
|
|
- os dados possam ser indexados a partir de qualquer fonte que seja acessível à sua
|
|
|
- aplicação. Por exemplo, um sistema de arquivos, um banco de dados, um formulário
|
|
|
- HTML, etc.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ O que é importante ressaltar é que qualquer informação pode ser adicionada a um
|
|
|
+ índice. Informações específicas de aplicações ou metadados podem ser armazenados em
|
|
|
+ campos de um documento, e posteriormente recuperados juntamente com o documento
|
|
|
+ durante uma pesquisa.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- A classe <classname>Zend_Search_Lucene_Field</classname> provê alguns métodos
|
|
|
- estáticos para criação de campos com diferentes características:
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Controlar o indexador é responsabilidade de sua aplicação. Este recurso garante que
|
|
|
+ os dados possam ser indexados a partir de qualquer fonte que seja acessível à sua
|
|
|
+ aplicação. Por exemplo, um sistema de arquivos, um banco de dados, um formulário
|
|
|
+ HTML, etc.
|
|
|
+ </para>
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Field</classname> provê alguns métodos
|
|
|
+ estáticos para criação de campos com diferentes características:
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$doc = new Zend_Search_Lucene_Document();
|
|
|
|
|
|
// O campo não é marcado, mas é indexado e armazenado dentro do índice.
|
|
|
@@ -113,18 +118,18 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
|
|
|
'My document content'));
|
|
|
]]></programlisting>
|
|
|
|
|
|
- <para>
|
|
|
- Cada um desses métodos (excluindo o método
|
|
|
- <methodname>Zend_Search_Lucene_Field::Binary()</methodname>) têm um parâmetro
|
|
|
- <varname>$encoding</varname> opcional para especificar a entrada dos dados de
|
|
|
- codificação.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Cada um desses métodos (excluindo o método
|
|
|
+ <methodname>Zend_Search_Lucene_Field::Binary()</methodname>) têm um parâmetro
|
|
|
+ <varname>$encoding</varname> opcional para especificar a entrada dos dados de
|
|
|
+ codificação.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- A codificação pode divergir entre documentos diferentes, bem como para campos
|
|
|
- diferentes dentro de um mesmo documento:
|
|
|
+ <para>
|
|
|
+ A codificação pode divergir entre documentos diferentes, bem como para campos
|
|
|
+ diferentes dentro de um mesmo documento:
|
|
|
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
$doc = new Zend_Search_Lucene_Document();
|
|
|
$doc->addField(Zend_Search_Lucene_Field::Text('title',
|
|
|
$title,
|
|
|
@@ -133,47 +138,49 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
|
|
|
$contents,
|
|
|
'utf-8'));
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Se o parâmetro de codificação é omitido, então a localidade atual é usada em tempo
|
|
|
- de processamento. Por exemplo:
|
|
|
- <programlisting language="php"><![CDATA[
|
|
|
+ <para>
|
|
|
+ Se o parâmetro de codificação é omitido, então a localidade atual é usada em tempo
|
|
|
+ de processamento. Por exemplo:
|
|
|
+
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
setlocale(LC_ALL, 'de_DE.iso-8859-1');
|
|
|
...
|
|
|
$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
]]></programlisting>
|
|
|
- </para>
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Os campos são sempre armazenados e devolvidos ao índice na codificação UTF-8.
|
|
|
- Qualquer conversão necessária para UTF-8 acontece automaticamente.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Os campos são sempre armazenados e devolvidos ao índice na codificação UTF-8.
|
|
|
+ Qualquer conversão necessária para UTF-8 acontece automaticamente.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Analisadores de texto (<link linkend="zend.search.lucene.extending.analysis">veja
|
|
|
- abaixo</link>) também podem converter texto para algumas outras codificações. Na
|
|
|
- verdade, o analisador de padrão converte o texto para a codificação
|
|
|
- 'ASCII//TRANSLIT'. Porém, tenha cuidado, esta tradução pode depender da localidade
|
|
|
- atual.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Analisadores de texto (<link linkend="zend.search.lucene.extending.analysis">veja
|
|
|
+ abaixo</link>) também podem converter texto para algumas outras codificações. Na
|
|
|
+ verdade, o analisador de padrão converte o texto para a codificação
|
|
|
+ 'ASCII//TRANSLIT'. Porém, tenha cuidado, esta tradução pode depender da localidade
|
|
|
+ atual.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Nomes de campos são definidos a seu critério no método
|
|
|
- <methodname>addField()</methodname>.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Nomes de campos são definidos a seu critério no método
|
|
|
+ <methodname>addField()</methodname>.
|
|
|
+ </para>
|
|
|
|
|
|
- <para>
|
|
|
- Java Lucene usa o campo 'contents' como um campo padrão de busca.
|
|
|
- <classname>Zend_Search_Lucene</classname> busca por padrão através de todos os
|
|
|
- domínios, mas este comportamento é configurável. Consulte o capítulo
|
|
|
- <link linkend="zend.search.lucene.query-language.fields">"Campo de pesquisa
|
|
|
- padrão"</link> para mais detalhes.
|
|
|
- </para>
|
|
|
+ <para>
|
|
|
+ Java Lucene usa o campo 'contents' como um campo padrão de busca.
|
|
|
+ <classname>Zend_Search_Lucene</classname> busca por padrão através de todos os
|
|
|
+ domínios, mas este comportamento é configurável. Consulte o capítulo
|
|
|
+ <link linkend="zend.search.lucene.query-language.fields">"Campo de pesquisa
|
|
|
+ padrão"</link> para mais detalhes.
|
|
|
+ </para>
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.understanding-field-types">
|
|
|
<title>Entendendo os Tipos de Campos</title>
|
|
|
+
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>
|
|
|
@@ -184,6 +191,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<classname>Zend_Search_Lucene</classname>.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Campos do tipo <code>UnIndexed</code> não são pesquisáveis, mas são retornados
|
|
|
@@ -192,6 +200,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
são bons candidatos para estes campos.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Campos do tipo <code>Binary</code> não são avaliados nem indexados, mas são
|
|
|
@@ -200,6 +209,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
string binária, por exemplo, um ícone.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Campos do tipo <code>Text</code> são armazenados, indexados e avaliados. Campos
|
|
|
@@ -207,6 +217,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
como retornadas por uma pesquisa, tais como descrições e títulos.
|
|
|
</para>
|
|
|
</listitem>
|
|
|
+
|
|
|
<listitem>
|
|
|
<para>
|
|
|
Campos do tipo <code>UnStored</code> são avaliados e indexados, mas não são
|
|
|
@@ -218,10 +229,11 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
relacional. Você pode indexar campos contendo dados volumosos usando campos
|
|
|
UnStored para pesquisa, e recuperá-los a partir de um banco de dados relacional
|
|
|
usando campos separados como identificadores.
|
|
|
- </para>
|
|
|
+ </para>
|
|
|
|
|
|
<table id="zend.search.lucene.index-creation.understanding-field-types.table">
|
|
|
<title>Tipos de Zend_Search_Lucene_Field</title>
|
|
|
+
|
|
|
<tgroup cols="5">
|
|
|
<thead>
|
|
|
<row>
|
|
|
@@ -232,6 +244,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<entry>Binário</entry>
|
|
|
</row>
|
|
|
</thead>
|
|
|
+
|
|
|
<tbody>
|
|
|
<row>
|
|
|
<entry>Keyword</entry>
|
|
|
@@ -240,6 +253,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<entry>Não</entry>
|
|
|
<entry>Não</entry>
|
|
|
</row>
|
|
|
+
|
|
|
<row>
|
|
|
<entry>UnIndexed</entry>
|
|
|
<entry>Sim</entry>
|
|
|
@@ -247,6 +261,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<entry>Não</entry>
|
|
|
<entry>Não</entry>
|
|
|
</row>
|
|
|
+
|
|
|
<row>
|
|
|
<entry>Binary</entry>
|
|
|
<entry>Sim</entry>
|
|
|
@@ -254,6 +269,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<entry>Não</entry>
|
|
|
<entry>Sim</entry>
|
|
|
</row>
|
|
|
+
|
|
|
<row>
|
|
|
<entry>Text</entry>
|
|
|
<entry>Sim</entry>
|
|
|
@@ -261,6 +277,7 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
<entry>Sim</entry>
|
|
|
<entry>Não</entry>
|
|
|
</row>
|
|
|
+
|
|
|
<row>
|
|
|
<entry>UnStored</entry>
|
|
|
<entry>Não</entry>
|
|
|
@@ -277,9 +294,11 @@ $doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.html-documents">
|
|
|
<title>Documentos HTML</title>
|
|
|
+
|
|
|
<para>
|
|
|
<classname>Zend_Search_Lucene</classname> oferece um recurso para análise de HTML.
|
|
|
Os documentos podem ser criados diretamente a partir de um arquivo ou string HTML:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Html::loadHTMLFile($filename);
|
|
|
$index->addDocument($doc);
|
|
|
@@ -337,6 +356,7 @@ $index->addDocument($doc);
|
|
|
|
|
|
<para>
|
|
|
Qualquer outro campo pode ser acrescentado pelo programador em documentos analisados:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
|
|
|
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
|
|
|
@@ -354,6 +374,7 @@ $index->addDocument($doc);
|
|
|
mas podem ser recuperados através dos métodos
|
|
|
<methodname>Zend_Search_Lucene_Document_Html::getLinks()</methodname> e
|
|
|
<methodname>Zend_Search_Lucene_Document_Html::getHeaderLinks()</methodname>:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
|
|
|
$linksArray = $doc->getLinks();
|
|
|
@@ -367,6 +388,7 @@ $headerLinksArray = $doc->getHeaderLinks();
|
|
|
<methodname>Zend_Search_Lucene_Document_Html::setExcludeNoFollowLinks($true)</methodname>
|
|
|
para ativar esta opção.
|
|
|
</para>
|
|
|
+
|
|
|
<para>
|
|
|
O método
|
|
|
<methodname>Zend_Search_Lucene_Document_Html::getExcludeNoFollowLinks()</methodname>
|
|
|
@@ -376,9 +398,11 @@ $headerLinksArray = $doc->getHeaderLinks();
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.docx-documents">
|
|
|
<title>Documentos do Word 2007</title>
|
|
|
+
|
|
|
<para>
|
|
|
<classname>Zend_Search_Lucene</classname> oferece um recurso de análise para Word 2007.
|
|
|
Os documentos podem ser criados diretamente de um arquivo do Word 2007:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
|
|
|
$index->addDocument($doc);
|
|
|
@@ -457,6 +481,7 @@ $index->addDocument($doc);
|
|
|
|
|
|
<para>
|
|
|
Qualquer outro campo pode ser acrescentado pelo programador em documentos analisados:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Docx::loadDocxFile($filename);
|
|
|
$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
|
|
|
@@ -470,14 +495,15 @@ $doc->addField(Zend_Search_Lucene_Field::Text(
|
|
|
$index->addDocument($doc);
|
|
|
]]></programlisting>
|
|
|
</para>
|
|
|
-
|
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.pptx-documents">
|
|
|
<title>Documentos do Powerpoint 2007</title>
|
|
|
+
|
|
|
<para>
|
|
|
<classname>Zend_Search_Lucene</classname> oferece um recurso de análise para Powerpoint
|
|
|
2007. Os documentos podem ser criados diretamente de um arquivo do Powerpoint 2007:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
|
|
|
$index->addDocument($doc);
|
|
|
@@ -556,6 +582,7 @@ $index->addDocument($doc);
|
|
|
|
|
|
<para>
|
|
|
Qualquer outro campo pode ser acrescentado pelo programador em documentos analisados:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Pptx::loadPptxFile($filename);
|
|
|
$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
|
|
|
@@ -571,9 +598,11 @@ $index->addDocument($doc);
|
|
|
|
|
|
<sect2 id="zend.search.lucene.index-creation.xlsx-documents">
|
|
|
<title>Documentos do Excel 2007</title>
|
|
|
+
|
|
|
<para>
|
|
|
<classname>Zend_Search_Lucene</classname> oferece um recurso de análise para Excel 2007.
|
|
|
Os documentos podem ser criados diretamente de um arquivo do Excel 2007:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
|
|
|
$index->addDocument($doc);
|
|
|
@@ -652,6 +681,7 @@ $index->addDocument($doc);
|
|
|
|
|
|
<para>
|
|
|
Qualquer outro campo pode ser acrescentado pelo programador em documentos analisados:
|
|
|
+
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$doc = Zend_Search_Lucene_Document_Xlsx::loadXlsxFile($filename);
|
|
|
$doc->addField(Zend_Search_Lucene_Field::UnIndexed(
|