Implementação Busca AMADIS 1.x

Da AMADIS

Peca esboço.gif

'Este artigo é somente um esboço para um artigo maior.
'Quer ajudar o AMADIS? Acrescente alguma informação!

As máquinas de busca ou motores de busca surgiram logo após o aparecimento da internet, com a intenção de prestar um serviço extremamente importante: a busca de qualquer informação na web, apresentando os resultados de uma forma organizada, e também com a proposta de fazer isto de uma maneira rápida e eficiente. A partir deste preceito básico diversas empresas se desenvolveram, entre as maiores empresas se encontram o Google e o Yahoo.

Mas o objetivo desses motores de busca, é poder indexar e categorizar todo o conteúdo disponível na Web. No caso de sistema de buscas privados, o objetivo é executar consultas sobre uma base de dados dinâmica, comumente encontrado em qualquer site na internet, em que utilize registros em banco de dados. No caso do AMADIS o sistema de busca, atinge os registros correspondentes aos projetos, comunidades e usuários do ambiente, tornando o seu funcionamento muito mais restrito, e simplificando a sua implementação.

O sistema de busca deve ser genérico para a utilização em diversos pontos da plataforma, pois o objetivo de ter uma ferramenta de busca dentro do AMADIS, é facilitar o encontro de Pessoas, Comunidades e Projetos dentro do ambiente, e mesmo assim de forma bem simplificada, e mais voltada para o uso em ambientes de EAD, sem a necessidade de indexação, em primeira instância.

Estrutura e Algoritmo utilizado

Na contrução desse mecanismo foi levado em consideração que usuários de ambiente de EAD, normalmente não utilizam recursos avançados para obter sucesso em suas consultas, pensando assim a ferramenta ficou muito mais simples de ser concretizada.

Juntamente com a criação do mecanismo de busca foi realizado a construção de widgets expecíficos para o tratamento de listagens, como o AMPageBox, AMBSearchUsers, etc. Abaixo segue um diagrama de relações entre as classes de busca e widgets:

SearchEngine.png

Explanando o diagrama acima, temos três componentes principais AMBProjectSearch, AMBCommunitiesSearch e AMBPeopleSearch, estes utilizam dois widgets para executar a sua função, o primeiro é o AMBSearch, que representa uma caixa de inserção da string de busca e o segundo um objeto de listagem (AMUserList, AMProjectList e AMBCommunitiesList). Estes três componentes utilizam seus respectivos métodos no AMAmbiente para efetuar a construção do comando SQL final através do CMSearch.

O CMSearch é o responsável por gerar a consulta que será aplicada ao banco de dados, e retornar um iterator ao objeto solicitante da consulta.Em sua implementação foi utilizado um algoritmo para interpretação das palavras utilizadas na busca, elas seguem três pequenas regras:

  • Palavras separadas por espaço em branco: O algoritmo faz uma separação das palavras separadas por espaços em branco, e retorna no resultado o conteúdo onde se encontram pelo menos uma das palavras citadas.
  • Inclusão de palavras: Quando colocado um sinal positivo "+", na frende da palavra, ele retorna somente dados onde contenham aquela palavra.
  • Exclusão de palavras: Quando colocado um sinal negativo "-", na frente da palavra, ele retorna somente dados onde não contenham aquela palavra.

Um problema pequeno ainda existente na construção do AMADIS é o fato da interface de busca não dar suporte a construção de strings de busca mais detalhadas, como no exemplo abaixo:

Palavras separadas por espaço em branco: palavra1 palavra2
Query resultante: SELECT $search_fields FROM Table WHERE field LIKE %palavra1% OR field LIKE %palavra2%
Inclusão de palavras: palavra1 +palavra2
Query resultante: SELECT $search_fields FROM Table WHERE field LIKE %palavra1% AND field LIKE %palavra2%
Exclusão de palavras: palavra1 -palavra2
Query resultante: SELECT $search_fields FROM Table WHERE field LIKE %palavra1% AND field NOT_LIKE %palavra2%

Talvez com a implementação de uma ferramenta de ajuda, em que fosse ativada quando o usuário escrevesse algo na caixa de busca, indicando as possibilidades, poderia-se acrescentar novas funcionalidades ao mecanismos, até mesmo determinar categiras para busca, como: palavra1 area:matematica. Possibilitando pesquisas ainda mais específicas.

Ferramentas pessoais
Parceiros
















SourceForge.net Logo

Supported by Cenqua