Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Java Magazine 49 - Conhecendo o Apache Lucene
Artigo publicado pela Java Magazine 49.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?

Conhecendo o Apache Lucene
Implemente recursos completos de pesquisa te
Nos últimos anos, os sites de busca se tornaram onipresentes em nossas vidas, ajudando
Para o desenvolvedor Java, existe uma alternativa open source que não deixa nada a dever a essas soluções proprietárias: o Apache Lucene, uma biblioteca de pesquisa textual extremamente poderosa incorporada como projeto da Apache Software Foundation em 2001.
Diversos projetos utilizam o Lucene. Exemplos são o mecanismo de busca web Nutch (um subprojeto do Lucene), o sistema de gerência de conteúdo Open
Neste artigo, veremos os conceitos básicos do Apache Lucene e como utilizá
Lucene numa casca de noz
A pesquisa textual, como sabemos, consiste em localizar documentos que contêm uma determinada palavra ou frase. O termo “documento” é usado neste artigo de maneira ampla, referindo
HTML, arquivos em vários formatos, enfim, a qualquer objeto que possua texto e seja relevante para o usuário.
Um dos conceitos centrais da pesquisa textual é a indexação. De maneira simplificada, indexar é processar os documentos e colocar as suas palavras em estruturas de dados que possam ser pesquisadas rapidamente: os índices. Os índices de pesquisa textual quase sempre são listas invertidas, em que cada palavra é uma chave que aponta os documentos nos quais ocorre. A Figura 1 ilustra esse conceito.

Figura 1. Esquema simplificado de uma lista invertida.
No Lucene, o índice é composto por duas estruturas lógicas principais: documentos e campos (fields). Cada entrada no índice corresponde a um documento (org.apache. lucene.document.Document) e cada documento possui um conjunto de campos (org.apache. lucene.document.Field). Fazendo uma analogia com um banco de dados relacional, os documentos seriam como linhas numa tabela e os campos seriam semelhantes às colunas. Em outras palavras, para cada objeto que podemos pesquisar (um documento) existem diversos atributos pelos quais podemos pesquisar (campos).
Um aspecto importante da pesquisa textual é que normalmente estamos interessados apenas no conteúdo dos documentos e não na sua formatação ou estrutura de arquivo específica. Por exemplo, se tivermos um conjunto de livros sobre Java
Analisando um pouco mais, veremos que mesmo o conteúdo textual de cada documento não é inteiramente relevante. Por exemplo, palavras muito comuns como “de”, “a” e “o” não precisam ser indexadas, pois ocorrem em praticamente 100% dos documentos em língua portuguesa. Além disso, algumas características da pesquisa, por exemplo discriminar maiúsculas e minúsculas e considerar caracteres acentuados, exigem o tratamento do texto antes da indexação. Este processo é chamado análise e é realizado após a extração do texto. No Lucene, a análise é feita pelas implementações da classe abstrata org. apache.lucene.analysis.Analyzer.
O Lucene fornece uma implementação default bastante razoável para a classe Analyzer, o StandardAnalyzer. Entretanto, para textos em língua portuguesa recomen
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
É bacharel em Ciência da Computação pela UFMG, desenvolve em Java há sete anos e possui as certificações SCJP e SCWCD. Atualmente trabalha como analista de sistemas para o BDMG (Banco de Desenvolvimento de Minas Gerais), onde empregou o Lucene em um sistema de classificação e pesquisa de documentos ...
3 COMENTÁRIOS
vc pode baixar através do link http://www.devmedia.com.br/resumo/download.asp?site=6&idrevista=9



