• Nenhum resultado encontrado

FERRAMENTAS AGREGADAS

No documento Diogo Luiz Bizatto.pdf - IIS Windows Server (páginas 93-98)

78

Na Figura 44 são exibidos os resultados de uma busca pela palavra chave “RESOLUÇÃO 1.081” e, neste caso, somente um resultado foi encontrado. A busca foi efetuada em 62 milissegundos e o tempo total para montar a página e exibi-la também foi de 62 milissegundos.

Como foi retornado apenas um documento na busca, o tempo de clusterização é praticamente nulo.

Enfim, o sistema desenvolvido permite métodos de busca utilizados nos sistemas de busca mais modernos, e ainda, contemplando todo o conteúdo dos documentos, fornecendo uma simples e amigável interface de utilização.

79 Figura 45. Extração de dados e metadados com Tika.

A vantagem de utilizar o Apache Tika é que essa ferramenta inclui as dependências para os tipos de arquivos mais comuns, como *.doc, *.docx, *.xls, *.xlsx, *.ppt, *.pptx, *.pdf, *.rtf, *.txt, realizando a extração dos dados de forma automática, ou seja, não é necessário especificar o tipo de arquivo que será processado, pois ele detecta automaticamente através da classe AutoDetectParser.

4.2.2 Apache Lucene

O Apache Lucene (LUCENE, 2010) é uma das bibliotecas mais utilizadas para indexação e procura de textos, cujo desenvolvimento teve início no ano de 1997 por Doug Cutting, e que alguns anos mais tarde resolveu publicar seus códigos fonte para a comunidade. Imediatamente, após a disponibilização, pessoas começaram a utilizá-lo. Foi então que em 2001 a Apache Software Foundation se ofereceu para adotar o projeto e, a partir desse momento, o Lucene cresceu de forma constante, tornando-se um verdadeiro projeto de colaboração (HATCHER & GOSPODNETIC, 2005).

O Lucene pode ser utilizado tanto em aplicações comerciais como em aplicativos de código aberto (software livre). As APIs poderosas do Lucene focam principalmente na indexação e procura de texto, sendo atualmente utilizadas em aplicativos como, Wikipedia, TheServerGuide, jGuru, LinkedIn e também em empresas, como IBM, AOL, HP e Microsoft (SONAWANE, 2009;

HATCHER & GOSPODNETIC, 2005).

80

É importante ressaltar que o Lucene contém apenas o núcleo do motor de busca, não incluindo um web crawler ou um parser para diferentes formatos de documentos. Desta forma, os usuários devem adicionar tais funcionalidades.

Para o Lucene não importa a origem dos dados, seu formato ou mesmo a linguagem em que foi escrito, desde que esses dados estejam em formato texto. Isto significa que o Lucene pode ser utilizado para indexar e buscar dados gravados em qualquer formato no qual possa ser extraída informação textual (WIKIPEDIA, 2010).

Como pode ser observado na Figura 46, a utilização da biblioteca é realizada em duas etapas principais, a indexação e a pesquisa.

Figura 46. Arquitetura do Apache Lucene.

Fonte: Hatcher e Gospodnetic (2005).

A indexação processa os dados recebidos em formato texto através da classe Document (representa o mecanismo escolhido pelo Lucene para troca de informações entre a aplicação e a biblioteca), gerando uma estrutura de dados inter-relacionada (lista invertida), que é armazenada no sistema de arquivos ou em memória na forma de um conjunto de arquivos de índice.

81

Antes que os dados sejam incluídos no índice eles passam por um processo de análise, que é a conversão do texto em tokens e a realização de operações de pré-processamento textual. O Lucene é fornecido com vários analisadores (BrazilianAnalyser) integrados para diversos idiomas, dentre eles o idioma Português do Brasil que trata da remoção de stopwords e da remoção de sufixos (stemming). É possível criar analisadores customizados usando blocos de construção fornecidos pelo Lucene.

A procura é o processo de buscar palavras no índice e de localizar documentos que contêm essas palavras usando para tal o modelo booleano vetorial e retornando os resultados baseados na similaridade entre a consulta e os documentos. Para realizar uma busca de forma correta com o Lucene é necessário especificar em qual campo do índice será realizada a pesquisa, qual palavra- chave pretende-se localizar e qual analisador será usado. Nesta situação é utilizado o BrazilianAnalyzer para realizar o mesmo pré-processamento utilizado na indexação.

O Lucene foi fundamental para desenvolvimento da aplicação, pois através dessa ferramenta foram realizadas as operações de pré-processamento (com algumas modificações, seção 4.3) e indexação dos documentos (seção 4.4).

4.2.3 Luke

Luke (LUKE, 2010) é uma ferramenta de código aberto, criada por Bialecki (2010), utilizada para diagnóstico, que acessa índices já existentes gerados pelo Lucene, permitindo exibir e alterar o seu conteúdo de várias maneiras, dentre elas:

• Navegar pelo número do documento ou por data de modificação;

• Recuperar uma lista ordenada de termos mais freqüentes;

• Executar uma pesquisa e procurar os resultados;

• Analisar os resultados da pesquisa;

• Apagar seletivamente os documentos do índice;

• Reconstruir os campos do documento original; e

• Otimizar índices.

O Luke foi utilizado no desenvolvimento para verificar e validar os resultados da indexação, exibindo detalhes dos documentos contidos nos índices. Também foi importante para testar as primeiras consultas diretamente no índice, tornando a validação da implementação mais ágil, pois

82

fornece um completo conjunto de ferramentas que possibilitam a avaliação detalhada dos índices gerados.

4.2.4 Limo

Limo (LIMO, 2010) é um monitor de indexação para o Lucene. É uma ferramenta pequena, funcionando como uma aplicação Web, que fornece informações básicas sobre os índices utilizados pelo motor de busca Lucene.

O Limo possui as seguintes características:

• Estatísticas da indexação;

• Caixa de pesquisa;

• Reconstrução campos não armazenados;

• Exibição de documentos; e

• Descrição dos arquivos de índice;

O Limo foi utilizado para testar os primeiros acessos aos índices gerados pelo Lucene através de uma aplicação Web. Através dele foram retirados exemplos importantes para construção das consultas e de como extrair informações dos índices.

4.2.4 Carrot2

Carrot2 (CARROT2, 2010) é uma biblioteca que possui um conjunto de aplicativos com suporte para utilizar e construir um motor de agrupamento de resultados para pesquisas realizadas através de sites da internet, índices gerados pelo Lucene ou através de uma API Java. Tal biblioteca organiza os resultados da busca em tópicos, de forma totalmente automática e sem a necessidade de treinamento prévio e construção de taxionomias.

Carrot2 também contém componentes para buscar resultados de através de pesquisas a vários motores de busca, tais como Yahoo, MSN Live, Google, além de possuir suporte a outras fontes de documentos como Lucene, Solr ou índice do Google Desktop.

O Carrot2 não é um motor de busca em si e não possui crawler e indexador. Suas APIs podem ser utilizadas para integrar os algoritmos de clustering em aplicações desenvolvidas em linguagem Java.

83

No documento Diogo Luiz Bizatto.pdf - IIS Windows Server (páginas 93-98)

Documentos relacionados