Desenvolvimento

29 mai, 2009

Full Text Search em aplicações GeneXus

Publicidade

Introdução

Hoje em dia a busca é essencial para qualquer usuário da Internet. Prova disso é o Google, o número 1 dos buscadores.

É cada vez mais comum os sites oferecerem um campo de busca em alguma parte da página. Esta funcionalidade, essencial, facilita muito a vida do usuário e torna-se muito importante para a permanência dos mesmos no site.

Como implementar esse mecanismo de busca nas aplicações? Muitas vezes a busca é feita no banco de dados, utilizando uma consulta SQL. Há casos onde o desenvolvedor utiliza-se do operador LIKE, o que acarreta em grande perda de performance se há uma quantidade muito grande de dados na tabela.

Podemos resolver essa questão com o poderoso recurso de FTS (Full Text Search) oferecido pelo GeneXus. O FTS está disponível na versão X do GeneXus.

Escopo do FTS nas Aplicações

O Full Text Search permite que os usuários da aplicação definam as suas próprias buscas. A busca irá analisar:

  • A base de dados (somente nas Transações definidas como Business Components);
  • Arquivos armazenados no HD.

O objetivo do FTS é buscar informações não estruturadas, como textos em campos de comentário, sugestão entre outros. Em geral são textos digitados pelo próprio usuário.

FTS na KB

O GeneXus também oferece um poderoso motor de busca que permite localizar rapidamente qualquer coisa em uma Knowledge Base. Você pode fazer uma busca informando um texto ou até mesmo especificando valores de propriedades de objetos ou da própria base de conhecimento.

Baseado em complexos algoritmos, o motor de busca (FTS) do GeneXus encontrará o que você procura, mesmo tendo que vasculhar toda a KB.

Para mais informações sobre FTS na KB, acesse: http://wiki.gxtechnical.com/commwiki/servlet/hwiki?category%3AFull+Text+Search+in+Knowledge+Base,

FTS na Aplicação

Como foi visto, o FTS permite modificar o modo como os usuários navegam nos sites. Existem duas formas básicas de navegação: a primeira é percorrendo links (um caminho complicado quando não se sabe o local exato do link) e a segunda forma é fazendo uma busca de texto completa em todo o site, com o objetivo de ir direto ao link desejado.

Uma situação muito usual do FTS é quando o usuário se lembra apenas de algo como: “Ganhou o prêmio”, “Pediram empréstimo” ou “Total Fatura: 5.400”, etc. É aí que o FTS entra em cena, pois resolver uma busca desse tipo via programação tradicional não seria nada fácil.

Um dos motores de busca utilizado pelo GeneXus é o Apache Lucene. Com ele é possível indexar as Transações GeneXus definidas como BC e arquivos do tipo HTML, PDF, documentos do Word ou qualquer outro formato do qual possa ser extraído informação textual.

O Apache Lucene, ou simplesmente Lucene, é um software de busca e uma API de indexação. Foi escrito em Java e também é um software de código aberto.

Para mais informações sobre o Apache Lucene, acesse: http://lucene.apache.org/

O usuário pode fazer buscas nas aplicações da seguinte maneira:

  • Procurando por todas as palavras-chave digitadas, por exemplo: empréstimo AND dívida (incluir espaços em branco entre as palavras é equivalente ao operador AND);
  • Procurando por textos exatos, por exemplo: juros reembolso;
  • Procurando por pelo menos uma palavra, por exemplo: crédito OR débito;
  • Procurando por agrupamento de palavras, por exemplo: (ativo OR compra) AND NOT financiar;

Existem mais opções de busca, elas dependem do motor de busca utilizado.

Conclusão

O FTS é um recurso poderoso e eficiente implementado na versão X do GeneXus. Ele se faz cada vez mais necessário nas aplicações, pois a cada dia aumenta-se a necessidade de buscar informações “à la Google”. 

No próximo artigo iremos abordar os tipos de dados disponíveis para se trabalhar com o FTS no GeneXus, também veremos como se faz para indexar arquivos, além, é claro, de exemplos.

Até a próxima!