|
|
@@ -1,226 +1,666 @@
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
+<!-- EN-Revision: 17409 -->
|
|
|
+<!-- Reviewed: no -->
|
|
|
<sect1 id="zend.search.lucene.overview">
|
|
|
- <title>Visão Geral</title>
|
|
|
-
|
|
|
- <sect2 id="zend.search.lucene.introduction">
|
|
|
- <title>Introdução</title>
|
|
|
-
|
|
|
- <para>Zend_Search_Lucene é um mecanismo para pesquisa de texto, de
|
|
|
- propósito geral, escrito totalmente em PHP 5. Por armazenar os
|
|
|
- índices no sistema de arquivos e não fazer uso de servidor de banco de
|
|
|
- dados, ele pode efetuar pesquisas em qualquer website rodando php.
|
|
|
- O Zend_Search_Lucene possui os seguintes recursos: <itemizedlist>
|
|
|
- <listitem>
|
|
|
- <para>Pesquisa agrupada por pontuação (ranked) - os resultados mais
|
|
|
- prováveis são retornados primeiro</para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>Consultas poderosas de diversos tipos: frase, curingas,
|
|
|
- aproximação, faixas e muito mais<footnote>
|
|
|
- <para>Por enquanto, apenas as consultas por termo e termos
|
|
|
- múltiplos são suportadas.</para>
|
|
|
- </footnote></para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>Busca por campo específico (ex: título, autor,
|
|
|
- descrição)</para>
|
|
|
- </listitem>
|
|
|
- </itemizedlist> Zend_Search_Lucene derivou do projeto Apache Lucene.
|
|
|
- Para mais informações, visite <ulink
|
|
|
- url="http://lucene.apache.org/java/docs/"></ulink>.</para>
|
|
|
- </sect2>
|
|
|
-
|
|
|
- <sect2 id="zend.search.lucene.index-creation.documents-and-fields">
|
|
|
- <title>Objetos Documento e Campo</title>
|
|
|
-
|
|
|
- <para>Zend_Search_Lucene trabalha sobre os documentos subdividindo-os em
|
|
|
- pequenas operações (atômicas) de indexação. Um documento é dividido em
|
|
|
- campos identificados cujo conteúdo é pesquisado.</para>
|
|
|
-
|
|
|
- <para>Um documento é representado por um objeto da classe
|
|
|
- Zend_Search_Lucene_Document, que por sua vez contém objetos da classe
|
|
|
- Zend_Search_Lucene_Field que representam os campos.</para>
|
|
|
-
|
|
|
- <para>O que é importante ressaltar é que qualquer tipo de 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>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><code>A classe Zend_Search_Lucene_Field</code> provê alguns métodos
|
|
|
- estáticos para criação de campos com diferentes características:</para>
|
|
|
-
|
|
|
- <programlisting role="php"><?php
|
|
|
+ <title>Resumo</title>
|
|
|
+
|
|
|
+ <sect2 id="zend.search.lucene.introduction">
|
|
|
+ <title>Introdução</title>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ <classname>Zend_Search_Lucene</classname> é um mecanismo para pesquisa de texto, de
|
|
|
+ propósito geral, escrito totalmente em <acronym>PHP</acronym> 5. Por armazenar os
|
|
|
+ í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>
|
|
|
+ Pesquisa agrupada por pontuação (ranked) - os resultados mais prováveis são
|
|
|
+ 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>
|
|
|
+ </listitem>
|
|
|
+ </itemizedlist>
|
|
|
+
|
|
|
+ <classname>Zend_Search_Lucene</classname> derivou do projeto Apache Lucene. Atualmente
|
|
|
+ (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
|
|
|
+ atualização <classname>Zend_Search_Lucene</classname> e não será compatível com as
|
|
|
+ implementações do <classname>Zend_Search_Lucene</classname> incluídas no Zend
|
|
|
+ Framework 1.0.x.
|
|
|
+ </para>
|
|
|
+ </note>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <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>
|
|
|
+ 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>
|
|
|
+ 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>
|
|
|
+ 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();
|
|
|
|
|
|
-// Field is not tokenized, but is indexed and stored within the index.
|
|
|
-// Stored fields can be retrived from the index.
|
|
|
-$doc->addField(Zend_Search_Lucene_Field::Keyword('doctype',
|
|
|
+// O campo não é marcado, mas é indexado e armazenado dentro do índice.
|
|
|
+// Campos armazenados podem ser recuperados a partir do índice.
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Keyword('doctype',
|
|
|
'autogenerated'));
|
|
|
|
|
|
-// Field is not tokenized nor indexed, but is stored in the index.
|
|
|
-$doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
|
|
|
+// O campo não é marcado nem indexado, mas é armazenado no índice.
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::UnIndexed('created',
|
|
|
time()));
|
|
|
|
|
|
-// Binary String valued Field that is not tokenized nor indexed,
|
|
|
-// but is stored in the index.
|
|
|
-$doc->addField(Zend_Search_Lucene_Field::Binary('icon',
|
|
|
+// O campo avaliado como string binária não é marcado nem indexado,
|
|
|
+// mas é armazenado no índice.
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Binary('icon',
|
|
|
$iconData));
|
|
|
|
|
|
-// Field is tokenized and indexed, and is stored in the index.
|
|
|
-$doc->addField(Zend_Search_Lucene_Field::Text('annotation',
|
|
|
+// O campo é marcado e indexado, e é armazenado no índice.
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text('annotation',
|
|
|
'Document annotation text'));
|
|
|
|
|
|
-// Field is tokenized and indexed, but that is not stored in the index.
|
|
|
-$doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
|
|
|
+// O campo é marcado e indexado, mas não é armazenado no índice.
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
|
|
|
'My document content'));
|
|
|
+]]></programlisting>
|
|
|
|
|
|
-?></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>Você pode dar nome aos campos de acordo com a sua preferência. Um
|
|
|
- campo chamado "contents" pode ser usado para a pesquisa "default". É uma
|
|
|
- boa prática colocar os dados principais do documento em um campo com este
|
|
|
- nome.</para>
|
|
|
- </sect2>
|
|
|
+ <para>
|
|
|
+ A codificação pode divergir entre documentos diferentes, bem como para campos
|
|
|
+ diferentes dentro de um mesmo documento:
|
|
|
|
|
|
- <sect2 id="zend.search.lucene.index-creation.understanding-field-types">
|
|
|
- <title>Entendendo os tipos de campos</title>
|
|
|
-
|
|
|
- <itemizedlist>
|
|
|
- <listitem>
|
|
|
- <para>Campos do tipo <code>Keyword</code> são armazenados e indexados
|
|
|
- ***fields are stored and indexed***, meaning they can be searched as
|
|
|
- well as displayed them back in search results. They are not split up
|
|
|
- into seperate words by tokenization. Enumerated database fields
|
|
|
- usually translate well to Keyword fields in Zend_Search_Lucene.</para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>Campos do tipo <code>UnIndexed</code> não são pesquisáveis, mas
|
|
|
- são retornados junto com os resultados das pesquisas. Database
|
|
|
- timestamps, chaves primárias, caminhos do sistema de arquivos, e
|
|
|
- outros identificadores externos são bons candidatos para campos
|
|
|
- UnIndexed.</para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>Campos do tipo <code>Binary</code> não são avaliados nem
|
|
|
- indexados, mas são armazenados para serem retornados em resultados de
|
|
|
- pesquisas. Eles podem ser usados para armazenar qulaquer tipo de dado
|
|
|
- que possa ser codificados em uma string binária, por exemplo, um
|
|
|
- ícone.</para>
|
|
|
- </listitem>
|
|
|
-
|
|
|
- <listitem>
|
|
|
- <para>Campos do tipo <code>Text</code> são armazenados, indexados e
|
|
|
- avaliados. Campos texto são apropriados para conter informações que
|
|
|
- devam ser pesquisadas, bem 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 armazenados no índice. Grandes quantidades de texto são
|
|
|
- melhor indexadas utilizando este tipo de campo. Dados armazenados
|
|
|
- criam um extenso índice no disco, então se você necessitar pesquisar
|
|
|
- sem exibir estes dados, utilize um campo UnStored. Campos UnStored são
|
|
|
- úteis quando utilizamos um índice Zend_Search_Lucene em combinação com
|
|
|
- um banco de dados 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>
|
|
|
-
|
|
|
- <table>
|
|
|
- <title>Campos Zend_Search_Lucene_Field </title>
|
|
|
-
|
|
|
- <tgroup cols="5">
|
|
|
- <thead>
|
|
|
- <row>
|
|
|
- <entry>Tipo de Campo</entry>
|
|
|
-
|
|
|
- <entry>Armazenado</entry>
|
|
|
-
|
|
|
- <entry>Indexado</entry>
|
|
|
-
|
|
|
- <entry>Tokenizado</entry>
|
|
|
-
|
|
|
- <entry>Binário</entry>
|
|
|
- </row>
|
|
|
- </thead>
|
|
|
-
|
|
|
- <tbody>
|
|
|
- <row>
|
|
|
- <entry>Keyword</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
- </row>
|
|
|
-
|
|
|
- <row>
|
|
|
- <entry>UnIndexed</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
- </row>
|
|
|
-
|
|
|
- <row>
|
|
|
- <entry>Binary</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
- </row>
|
|
|
-
|
|
|
- <row>
|
|
|
- <entry>Text</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
- </row>
|
|
|
-
|
|
|
- <row>
|
|
|
- <entry>UnStored</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Sim</entry>
|
|
|
-
|
|
|
- <entry>Não</entry>
|
|
|
- </row>
|
|
|
- </tbody>
|
|
|
- </tgroup>
|
|
|
- </table>
|
|
|
- </listitem>
|
|
|
- </itemizedlist>
|
|
|
- </sect2>
|
|
|
+ <programlisting language="php"><![CDATA[
|
|
|
+$doc = new Zend_Search_Lucene_Document();
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text('title',
|
|
|
+ $title,
|
|
|
+ 'iso-8859-1'));
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::UnStored('contents',
|
|
|
+ $contents,
|
|
|
+ 'utf-8'));
|
|
|
+]]></programlisting>
|
|
|
+ </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[
|
|
|
+setlocale(LC_ALL, 'de_DE.iso-8859-1');
|
|
|
+...
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $contents));
|
|
|
+]]></programlisting>
|
|
|
+ </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>
|
|
|
+ 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>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <sect2 id="zend.search.lucene.index-creation.understanding-field-types">
|
|
|
+ <title>Entendendo os Tipos de Campos</title>
|
|
|
+ <itemizedlist>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ Campos do tipo <code>Keyword</code> são armazenados e indexados, o que
|
|
|
+ significa que eles podem ser pesquisados, bem como apresentados nos resultados
|
|
|
+ de busca. Eles não podem ser divididos em palavras separadas por marcação.
|
|
|
+ Campos de dados numerados geralmente os traduzem bem no
|
|
|
+ <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
|
|
|
+ junto com os resultados das pesquisas. Timestamps de banco de dados, chaves
|
|
|
+ primárias, caminhos do sistema de arquivos, e outros identificadores externos
|
|
|
+ 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
|
|
|
+ armazenados para serem retornados em resultados de pesquisas. Eles podem ser
|
|
|
+ usados para armazenar qulaquer tipo de dado que possa ser codificados em uma
|
|
|
+ string binária, por exemplo, um ícone.
|
|
|
+ </para>
|
|
|
+ </listitem>
|
|
|
+ <listitem>
|
|
|
+ <para>
|
|
|
+ Campos do tipo <code>Text</code> são armazenados, indexados e avaliados. Campos
|
|
|
+ texto são apropriados para conter informações que devam ser pesquisadas, bem
|
|
|
+ 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
|
|
|
+ armazenados no índice. Grandes quantidades de texto são melhor indexadas
|
|
|
+ utilizando este tipo de campo. Dados armazenados criam um extenso índice no
|
|
|
+ disco, então se você necessitar pesquisar sem exibir estes dados, utilize um
|
|
|
+ campo UnStored. Campos UnStored são úteis quando utilizamos um índice
|
|
|
+ <classname>Zend_Search_Lucene</classname> em combinação com um banco de dados
|
|
|
+ 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>
|
|
|
+
|
|
|
+ <table id="zend.search.lucene.index-creation.understanding-field-types.table">
|
|
|
+ <title>Tipos de Zend_Search_Lucene_Field</title>
|
|
|
+ <tgroup cols="5">
|
|
|
+ <thead>
|
|
|
+ <row>
|
|
|
+ <entry>Tipo de Campo</entry>
|
|
|
+ <entry>Armazenado</entry>
|
|
|
+ <entry>Indexado</entry>
|
|
|
+ <entry>Marcado</entry>
|
|
|
+ <entry>Binário</entry>
|
|
|
+ </row>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry>Keyword</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>UnIndexed</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>Binary</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>Text</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ </row>
|
|
|
+ <row>
|
|
|
+ <entry>UnStored</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Sim</entry>
|
|
|
+ <entry>Não</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </table>
|
|
|
+ </listitem>
|
|
|
+ </itemizedlist>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <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);
|
|
|
+...
|
|
|
+$doc = Zend_Search_Lucene_Document_Html::loadHTML($htmlString);
|
|
|
+$index->addDocument($doc);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Html</classname> utiliza os métodos
|
|
|
+ <methodname>DOMDocument::loadHTML()</methodname> e
|
|
|
+ <methodname>DOMDocument::loadHTMLFile()</methodname> para analisar o código HTML, por
|
|
|
+ isso não precisa de HTML bem formatado ou de <acronym>XHTML</acronym>. Por outro lado,
|
|
|
+ é dependente da codificação especificada pela tag de cabeçalho "meta http-equiv".
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Html</classname> reconhece o título do
|
|
|
+ documento, o corpo e as meta tags do cabeçalho.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'title' é na verdade o valor /html/head/title. É armazenado no índice, marcado
|
|
|
+ e disponibilizado para pesquisa.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'body' é o próprio conteúdo corpo do arquivo ou string HTML. Não inclui os
|
|
|
+ scripts, comentários ou atributos.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Os métodos <methodname>loadHTML()</methodname> e
|
|
|
+ <methodname>loadHTMLFile()</methodname> da classe
|
|
|
+ <classname>Zend_Search_Lucene_Document_Html</classname> também possuem um segundo
|
|
|
+ argumento opcional. Se for definido como true, o conteúdo do corpo é também armazenado
|
|
|
+ no índice e pode ser recuperado a partir do índice. Por padrão, o corpo é marcado e
|
|
|
+ indexado, mas não armazenado.
|
|
|
+ </para>
|
|
|
+ <para>
|
|
|
+ O terceiro parâmetro dos métodos <methodname>loadHTML()</methodname> e
|
|
|
+ <methodname>loadHTMLFile()</methodname> especifica opcionalmente a codificação do
|
|
|
+ código no documento HTML. É utilizado quando a codificação não é especificada usando a
|
|
|
+ meta tag Content-type HTTP-EQUIV.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Outras meta tags do cabeçalho no documento produzem campos de documentos adicionais. O
|
|
|
+ campo 'name' é tirado do atributo 'name', e o atributo o 'content' preenche o campo
|
|
|
+ 'value'. Ambos são marcados, indexados e armazenados, então os documentos podem ser
|
|
|
+ procurados pelas suas meta tags (por exemplo, por palavras-chave).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <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',
|
|
|
+ time()));
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::UnIndexed('updated',
|
|
|
+ time()));
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text('annotation',
|
|
|
+ 'Document annotation text'));
|
|
|
+$index->addDocument($doc);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ Links nos documentos não estão incluídos no documento gerado,
|
|
|
+ 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();
|
|
|
+$headerLinksArray = $doc->getHeaderLinks();
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A partir do Zend Framework 1.6 é possível excluir os links com o atributo
|
|
|
+ <code>rel</code> definido como <code>'nofollow'</code>. Utilize
|
|
|
+ <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>
|
|
|
+ retorna o estado atual do marco "Exclude nofollow links".
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <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);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Docx</classname> utiliza a classe
|
|
|
+ <code>ZipArchive</code> e os métodos <code>simplexml</code> para analisar o documento
|
|
|
+ de origem. Se a classe <code>ZipArchive</code> (do módulo php_zip) não estiver
|
|
|
+ disponível, o <classname>Zend_Search_Lucene_Document_Docx</classname> também não estará
|
|
|
+ disponível para ser usado com o Zend Framework.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Docx</classname> reconhece os metadados
|
|
|
+ e o texto do documento. Metadados consiste, dependendo do conteúdo do documento, de
|
|
|
+ nome do arquivo (filename), título (title), assunto (subject), autor (creator),
|
|
|
+ palavras-chave (keywords), descrição (description), última modificação por
|
|
|
+ (lastModifiedBy), revisão (revision), data da modificação (modified) e data da criação
|
|
|
+ (created).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'filename' é o nome do arquivo do Word 2007.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'title' é o título do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'subject' é o assunto do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'creator' é o autor do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'keywords' contém as palavras-chaves do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'description' é a descrição do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'lastModifiedBy' é o nome de quem fez a última modificação no documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'revision' é o número da revisão do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'modified' contém a data e hora da última modificação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'created' contém a data e hora da criação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'body' é o próprio conteúdo do documento do Word 2007. Ele inclui apenas texto
|
|
|
+ normal, comentários e revisões não estão incluídos.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O método <methodname>loadDocxFile()</methodname> da classe
|
|
|
+ <classname>Zend_Search_Lucene_Document_Docx</classname> também possui um segundo
|
|
|
+ argumento opcional. Se for definido como true, o conteúdo do corpo é também armazenado
|
|
|
+ no índice e pode ser recuperado a partir do índice. Por padrão, o corpo é marcado e
|
|
|
+ indexado, mas não armazenado.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <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(
|
|
|
+ 'indexTime',
|
|
|
+ time())
|
|
|
+);
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text(
|
|
|
+ 'annotation',
|
|
|
+ 'Document annotation 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);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Pptx</classname> utiliza a classe
|
|
|
+ <code>ZipArchive</code> e os métodos <code>simplexml</code> para analisar o documento
|
|
|
+ de origem. Se a classe <code>ZipArchive</code> (do módulo php_zip) não estiver
|
|
|
+ disponível, o <classname>Zend_Search_Lucene_Document_Pptx</classname> também não estará
|
|
|
+ disponível para ser usado com o Zend Framework.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Pptx</classname> reconhece os metadados
|
|
|
+ e o texto do documento. Metadados consiste, dependendo do conteúdo do documento, de
|
|
|
+ nome do arquivo (filename), título (title), assunto (subject), autor (creator),
|
|
|
+ palavras-chave (keywords), descrição (description), última modificação por
|
|
|
+ (lastModifiedBy), revisão (revision), data da modificação (modified) e data da criação
|
|
|
+ (created).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'filename' é o nome do arquivo do Powerpoint 2007.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'title' é o título do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'subject' é o assunto do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'creator' é o autor do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'keywords' contém as palavras-chaves do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'description' é a descrição do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'lastModifiedBy' é o nome de quem fez a última modificação no documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'revision' é o número da revisão do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'modified' contém a data e hora da última modificação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'created' contém a data e hora da criação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'body' é o conteúdo de todos os slides e notas de slide no documento do
|
|
|
+ Powerpoint 2007.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O método <methodname>loadPptxFile()</methodname> da classe
|
|
|
+ <classname>Zend_Search_Lucene_Document_Pptx</classname> também possui um segundo
|
|
|
+ argumento opcional. Se for definido como true, o conteúdo do corpo é também armazenado
|
|
|
+ no índice e pode ser recuperado a partir do índice. Por padrão, o corpo é marcado e
|
|
|
+ indexado, mas não armazenado.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <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(
|
|
|
+ 'indexTime',
|
|
|
+ time()));
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text(
|
|
|
+ 'annotation',
|
|
|
+ 'Document annotation text'));
|
|
|
+$index->addDocument($doc);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
+
|
|
|
+ <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);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> utiliza a classe
|
|
|
+ <code>ZipArchive</code> e os métodos <code>simplexml</code> para analisar o documento
|
|
|
+ de origem. Se a classe <code>ZipArchive</code> (do módulo php_zip) não estiver
|
|
|
+ disponível, o <classname>Zend_Search_Lucene_Document_Xlsx</classname> também não estará
|
|
|
+ disponível para ser usado com o Zend Framework.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ A classe <classname>Zend_Search_Lucene_Document_Xlsx</classname> reconhece os metadados
|
|
|
+ e o texto do documento. Metadados consiste, dependendo do conteúdo do documento, de
|
|
|
+ nome do arquivo (filename), título (title), assunto (subject), autor (creator),
|
|
|
+ palavras-chave (keywords), descrição (description), última modificação por
|
|
|
+ (lastModifiedBy), revisão (revision), data da modificação (modified) e data da criação
|
|
|
+ (created).
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'filename' é o nome do arquivo do Excel 2007.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'title' é o título do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'subject' é o assunto do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'creator' é o autor do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'keywords' contém as palavras-chaves do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'description' é a descrição do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'lastModifiedBy' é o nome de quem fez a última modificação no documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'revision' é o número da revisão do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'modified' contém a data e hora da última modificação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'created' contém a data e hora da criação do documento.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O campo 'body' é o conteúdo de todas as células em todas as planilhas do documento do
|
|
|
+ Excel 2007.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <para>
|
|
|
+ O método <methodname>loadXlsxFile()</methodname> da classe
|
|
|
+ <classname>Zend_Search_Lucene_Document_Xlsx</classname> também possui um segundo
|
|
|
+ argumento opcional. Se for definido como true, o conteúdo do corpo é também armazenado
|
|
|
+ no índice e pode ser recuperado a partir do índice. Por padrão, o corpo é marcado e
|
|
|
+ indexado, mas não armazenado.
|
|
|
+ </para>
|
|
|
+
|
|
|
+ <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(
|
|
|
+ 'indexTime',
|
|
|
+ time()));
|
|
|
+$doc->addField(Zend_Search_Lucene_Field::Text(
|
|
|
+ 'annotation',
|
|
|
+ 'Document annotation text'));
|
|
|
+$index->addDocument($doc);
|
|
|
+]]></programlisting>
|
|
|
+ </para>
|
|
|
+ </sect2>
|
|
|
</sect1>
|
|
|
-<!--
|
|
|
-vim:se ts=4 sw=4 et:
|
|
|
--->
|