Do que trata o artigo

Este artigo tem o intuito de desenvolver um sistema de buscas local estilo “Google”, usando um engine conhecido como Lucene.net. Vamos mostrar como indexar algumas informações e posteriormente disponibilizá-las para serem consultadas através de uma interface Web.

Para que serve

O Lucene.net é um framework de indexação de informações das mais diversas fontes e que podem ser disponibilizadas através de consultas, servindo como um poderoso mecanismo para localização rápida de dados, exatamente como os mecanismos de buscas mais modernos vistos atualmente.

Em que situação o tema é útil

Imagine que seu sistema armazene arquivos PDF e seja necessário criar uma busca para o conteúdo desses arquivos. Ou se não for PDF, qualquer outro tipo de arquivo (RTF, XML, Word, HTML, Texto) e até mesmo banco de dados. É possível criar um arquivo indexado e disponibilizá-lo para seus sistemas, assim, de forma similar ao Windows Desktop Search ou Google Desktop Search, será possível localizar por textos, frases, combinações e muito mais.

Resumo do DevMan

O objetivo deste artigo é apresentar o Lucene.net, uma ferramenta que realiza a indexação de arquivos, bem similar ao que o Google Desktop Engine e o Windows Desktop Search fazem. Serão mostrados os conceitos, as principais classes / APIs do Lucene.net e posteriormente vamos colocar em prática seu uso desenvolvendo o exemplo prático. Além de realizar a indexação é possível realizar buscas onde os resultados podem ser ordenados, negritar o texto achado, buscar por palavras aproximadas, fazer pesquisa com a utilização de condicionais lógicas, indexar informações em arquivos que podem ficar alocados tanto no disco quanto na memória, fazer a busca em mais de um índice e muito mais.

O projeto Lucene

O Lucene começou a ser desenvolvido no final de 1997 por Doug Cutting, com a linguagem de programação Java. Em 2000 o projeto Lucene foi lançado no SourceForge, dessa forma os usuários foram apresentados a essa ferramenta de busca, que após um ano da sua divulgação conseguiu vários utilizadores, tornando-se membro do Apache Jakarta (projeto que reúne soluções e frameworks em Java de alta qualidade e colaboração). Dessa forma o projeto ganhou força na sua divulgação e consequentemente por ser Open Source, a colaboração na implementação e melhorias fluíram ao longo dos anos, aumentando a quantidade de colaboradores. Para atender a essa gama de desenvolvedores foi necessário fazer a implementação para outras linguagens de programação, como o C#, Perl, Python e C++.

A Figura 1 mostra em linhas gerais o processo de indexação de texto usado pelo Lucene.net. O motivo de mostrar esse processo é facilitar o entendimento de como é feita a indexação, a procura e ao final, a exibição do resultado para o usuário. Perceba que o texto pode ser extraído de um arquivo HTML, Word, PDF, uma base de dados dentre outras fontes. O mecanismo de extração desse texto fica a cargo do desenvolvedor, pois quando o texto é obtido, o mesmo é repassado ao Lucene.Net para sofrer uma análise.

Figura 1. Visão geral da indexação de texto

Analyzer

Antes de criar o índice, que é o local onde informações analisadas estão alojadas, esses dados passam por um processo de análise realizado pelo Analyzer do framework. Esse Analyzer, que nada mais é do que uma classe, pode tratar a informação passada a ele de diversas maneiras, aplicando tipos de análise. Vamos compreender de forma rápida cada uma delas:

...
Quer ler esse conteúdo completo? Tenha acesso completo