implementacao de uma maquina de busca com o lucene-1.0

19
FACULDADE PRESIDENTE ANTÔNIO CARLOS DE CONTAGEM CURSO TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Implementação de Uma Máquina de Busca: “MBText” Eliene Alves de Moura Fernando Curvelo Volpato Jarbas Ivon Ugarte Rodrigo Marcone Xavier Contagem 2º semestre de 2011

Upload: jiugarte2

Post on 11-Aug-2015

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

FACULDADE PRESIDENTE ANTÔNIO CARLOS DE CONTAGEM

CURSO TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Implementação de Uma Máquina de Busca:

“MBText”

Eliene Alves de Moura Fernando Curvelo Volpato

Jarbas Ivon Ugarte Rodrigo Marcone Xavier

Contagem 2º semestre de 2011

Page 2: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

2

Eliene Alves de Moura

Fernando Curvelo Volpato Jarbas Ivon Ugarte

Rodrigo Marcone Xavier

Implementação de Uma Máquina de Busca:

“MBText”

Trabalho Interdisciplinar de conclusão de

Módulo apresentado como exigência parcial para conclusão do 5º período do Curso de Tecnologia em Análise e Desenvolvimento de Sistemas da UNIPAC Contagem.

Prof. Orientador: RAFAEL FELIPE DUTRA DA SILVEIRA

Contagem 2º. Semestre de 2011

Page 3: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

3

SUMÁRIO 1 - INTRODUÇÃO 2 -OBJETIVO 3 -INTERDISCIPLINARIDADE 3.1 ARQUITETURA DE MÁQUINAS DE BUSCA 3.2 LINGUAGEM DE PROGRAMAÇÃO PARA WEB III 3.3 LEGISLAÇÃO APLICADA À INFORMÁTICA 4- CONCEITOS BÁSICOS 4.1-O QUE É UMA MÁQUINA DE BUSCA 4.2-PORQUE USAR UMA MÁQUINA DE BUSCA TEXTUAL 5- 6- 7- CONCLUSÃO BIBLIOGRAFIA

Page 4: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

4

1-INTRODUÇÃO

A criação de uma Máquina de Busca Textual com o nome “MBText”, será desenvolvida seguindo uma sequência de estudos e implementações.

No primeiro momento realizar-se-á o levantamento dos dados e a pesquisa bibliográfica e documentação para, a posteriori, viabilizar a implementação do projeto a fim de desenvolver o software.

Visto que consiste em um trabalho acadêmico e um desenvolvimento de um produto, software, cujos prazos de seu desenvolvimento demandam certa quantidade de tempo, o mesmo será desenvolvido no corrente período. Lembrando que este projeto consiste também em um trabalho acadêmico desenvolvido por alunos do curso de Análise e Desenvolvimento de Sistemas (ADS) da UNIPAC- Contagem.

Um aspecto importante a ressaltar consiste nos softwares e linguagens de programação utilizada para desenvolver este trabalho acadêmico, aos quais são utilizados como instrumento de aprendizagem durante o curso em questão. Os principais são: JAVA, HTML dentre outros.

Outro aspecto a ser levado em conta consiste em observar o que este trabalho acadêmico foi desenvolvido no último período do curso de A.D.S. , de modo que se utilize do aprendizado de várias conceitos de várias disciplinas e utilizado de várias ferramentas aprendidas neste curto tempo de aprendizagem, pois trata-se de um curso de curta duração (tecnólogo) mas que os conceitos aprendidos foram aproveitados pelos alunos em questão e que deveu-se focar o tema proposto às disciplinas do corrente período, limitando um pouco à criatividade do corpo discente.

Page 5: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

5

2-OBJETIVOS

Será desenvolvido um software que irá utilizar a biblioteca LUCENE onde serão mostrados suas funcionalidades e principais características sobre máquinas de busca.

A Máquina de Busca Textual que será criada “MBText” tem por objetivo indexar um conjunto de arquivos textuais a fim de localizar palavras e trechos dos mesmos.

Este sistema poderá, também, ser anexado em outros softwares a serem criados

em sistemas de empresas e sites. Portanto, outro objetivo se mostra intrínseco ao desenvolver do trabalho em si, o

desenvolver de um produto, não um produto qualquer mas um software, que possa entrar no mercado com condições de competir no mercado , se complementado e incorporado a sites e sistemas podendo o mesmo ser modificado, melhorado para melhor se adequar à necessidade proposta.

Page 6: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

6

3-INTERDISCIPLINARIDADE Conforme descrito no manual do trabalho interdisciplinar no corrente período:

“O objetivo do trabalho interdisciplinar é integrar as disciplinas cursadas no período, através da interdisciplinaridade, de acordo com um tema central relacionado ao eixo temático de cada módulo do curso. Tem o propósito também de interligar e conjugar os conhecimentos teóricos e práticos discorridos pelas disciplinas e a vivência prática-profissional dos docentes e alunos.” (UNIPAC. 2ºsemestre-2011)

3.1 ARQUITETURA DE MÁQUINAS DE BUSCA

A partir do momento que se escolheu o tema proposto que consiste em desenvolver uma máquina de busca de palavras, fica intrínseco ao conteúdo da disciplina como sendo um dos principais pilares do desenvolver deste trabalho acadêmico.

3.2 LINGUAGEM DE PROGRAMAÇÃO PARA WEB III

Desde a concepção dos programas básicos do projeto até sua finalização serão utilizados conceitos e técnicas aprendidas em ATP1 e ATP2 visto que o conhecimento destas duas disciplinas é imprescindível ao desenvolvimento do projeto, tais como programação básica em Java e Portugol que viabilizaram uma capacitação básica para outras linguagens da programação, além da própria utilização do JAVA no projeto. Portanto fica claro que outro grande pilar de sustentação no desenvolver deste trabalho é a programação em Java viabilizado pela disciplina ATP3.

3.3 LEGISLAÇÃO APLICADA À INFORMÁTICA

A partir da necessidade de se registrar qualquer produto criado, incluindo softwares, objetivando proteger os direitos de quem o criou e de evitar apropriações indevidas. A disciplina em questão se integra nas anteriores para este trabalho, neste 5º período, cedendo textos a serem utilizados e posteriormente objetivando o registro do software conforme orientação da mesma, caso o mesmo possa ser utilizado de forma comercial e público.

Page 7: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

7

4-Conceitos Básicos 4.1-O que é uma máquina de busca

“Um motor de busca, motor de pesquisa ou máquina de busca é

um sistema de software projetado para encontrar informações

armazenadas em um sistema computacional a partir de palavras-chave

indicadas pelo utilizador, reduzindo o tempo necessário para encontrar

informações”.(< http://pt.wikipedia.org/wiki/Motor_de_busca>Set.2011)

De maneira geral, um sistema encarregado de fazer buscas em um conjunto de documentos (seja ele na Web ou não) consiste basicamente de 3 partes: coleta/armazenamento de documentos indexação dos mesmos e processamento de consultas.

4.2- Porque criar uma máquina de busca textual? A partir do momento que um usuário precise buscar em textos informações

específicas não só por títulos e/ou autor mas também por palavras ou frases , como por exemplo em artigos que geralmente são algo em torno de 1500 palavras, imagine que no banco de artigos a serem buscados há mais de um milhão de artigos cadastrados, o usuário poderá usar um bom framework de busca textual será o mais viável pois uar o banco de dados do operador não seria a solução mais eficaz.

4.3-Recuperação da Informação (RI) é "a tarefa de encontrar documentos relevantes a partir de um corpus ou conjunto

de textos em resposta a uma necessidade de informação de um usuário".

A área de RI tornou-se mais conhecida com o advento das máquinas de busca na Web. Um dos modelos mais conhecidos de RI com esse intuito é o Espaço Vetorial (ou Vector Space Model). Este modelo é, provavelmente, usado por todas as grandes máquinas de busca de hoje, inclusive o Google. 4.3.1 Histórico Primórdios da Recuperação da Informação:

40 séculos atrás (brahmanes, escrita suméria) Ciência, década de 40 do século XX

Bush, 1945 Weaver, 1949 Mooers 1951 (criou o termo Recuperação da Informação)

Page 8: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

8

4.4-Termos utilizados para Máquina de Busca: Search Engine; Ferramenta de Busca; Mecanismo de Busca; Buscador; Motor de Busca; SRI (Sistema de Recuperação da Informação); 4.5 Estrutura

Arquitetura de uma máquina de busca

Page 9: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

9

Etapas:

Histórico:

1

1993

2

1993

3

1994

4

1994

5

1994

6

1995

7

1995

8

1995

9

1995

10

1995

11

1996

12

1997

13

2009

Page 10: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

10

4.4-ETAPAS DE UMA MÁQUINA DE BUSCA:

4.1-COLETOR: SLIDE2 PG24

Indica quais os domínios a serem catalogados, os tipos de servidores a entrarem na coleta, os tipos de arquivos a serem buscados dentre outros. Um modelo conhecido é o tipo Aranha onde a web pode ser caracterizada como um grafo direcionado onde cada URL é um vértice e os links entre elas são as arestas.

4.2-ARMAZENAMENTO: Consiste no armazenamento de páginas de diversos formatos: html, txt, doc, pdf,dentre outros. Atualmente o texto das figuras também é indexado. 4.3-INDEXAÇÃO: Uma vez que são retornadas Informações sobre as páginas, a máquina de busca deve armazenar essas informações de modo a utilizá-las para responder posteriores perguntas dos usuários. Esse processo chama-se indexação. Esse processo pode variar de uma máquina de busca para outra da seguinte forma: Características da indexação – Caso a indexação seja feita de forma automática, ela pode variar em sua sofisticação de forma a melhorar a precisão da resposta. Documentos podem ser indexados por frequência de palavras e frases, pode-se atribuir pesos para as posições onde aparecem as palavras (por ex.: uma palavra no título da página tem maior peso que uma palavra no texto), ou até por uma análise mais detalhada do documento. A utilização das meta tags supracitadas também podem ser usadas nessa fase. *Velocidade de indexação – O processo de indexação consome tempo. Por exemplo, o Altavista (www.altavista.com.br) demora em média 6 semanas até uma URL achada pelo spider ser listada em sua base de dados indexada e, portanto, ser passível de ser encontrada (Müller, 1999).

4.4-CONSULTA:

Após os passos anteriores, a máquina de busca é capaz de receber pedidos de busca. Quando um pedido é requerido, a máquina de busca procura no índice entradas que casem com o pedido de busca e ordena as respostas pelo o que acredita ser mais relevante.

Modelos Clássicos para Recuperação da Informação • Modelo Booleano • Modelo Vetorial • Modelo Probabilístico

Page 11: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

11

5-TIPOS DE MÁQUINAS DE BUSCA: SLIDE2 PG32 5.1-Buscadores Globais:

Este modelo busca documentos na rede e apresenta-o de forma aleatória, dependendo da quantidade de acesso ao site, dentre outros fatores. Um exemplo é o GOOGLE. 5.2-Buscadores Verticais:

Este tipo realiza pesquisas especializadas, com base de dados própria. Está relacionado à busca relativo á pagamento de mensalidade ou de um valor por clic. Exemplo: BuscaPé;

5.3-Guias Locais:

Este tipo está relacionado a buscadores locais e regionais e as informações estão relacionadas a endereços de empresas e prestadores de serviço. Geralmente são cadastros de publicações pagas. É indicado para empresas que procuram oferecer produtos e serviços em uma região exemplo: AcheCerto;

5.4-Guias de Busca Locais:

São buscadores de abrangência nacional que lista as empresas e prestadores de serviços próximas ao endereço do internauta a partir de um texto digitado. A proximidade é avaliada normalmente pelo cep, Donavera.com, ou por coordenadas de GPs.”()

5.5-Diretórios de Web Sites:

Este tipo de buscador é organizado por categorias e subcategorias, sua finalidade é permitir ao usuário encontrar rapidamente sites que desejar, buscando por categorias, e não por palavras-chave , são índices de sites.Ex: Open Directory Project;

6-O SISTEMA DE RECUPERAÇÃO DA INFORMAÇÃO (SRI)

O SRI deve de alguma forma “interpretar” o conteúdo das informações encontradas nos documentos de uma coleção e ordená-los de acordo com um grau de relevância para o usuário. Relevância: É objetivo do SRI recuperar todos os documentos que são relevantes a uma consulta de um usuário e o menor número possível de documentos não relevantes. As medidas mais comuns para avaliar a qualidade de um sistema de busca e recuperação de informação são conhecidas como revocação (recall) e precisão: Revocação: mede a proporção de documentos relevantes que formam retornados como resultado a uma consulta do usuário. Precisão: mede quantos documentos relevantes foram recuperados

Existem dois fatores muito importantes que governam a eficiência da indexação de um documento e consequentemente, influenciam na revocação e na precisão: Exaustividade: Define o número de diferentes conceitos (tópicos) que estão indexados Especificidade: Define o grau de precisão da linguagem de indexação em descrever um dado documento.

O objetivo geral de um sistema de informação é minimizar o overhead para localização da informação para o usuário. � tempo para geração da pergunta

Page 12: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

12

� tempo para execução da pergunta � tempo para buscar os resultados � tempo para organização da resposta para ser mostrada ao usuário � tempo perdido para encontrar o resultado com leituras de documentos não

relevantes

� Indexação Por motivos históricos, documentos em uma coleção são geralmente representados por um conjunto de termos de indexação ou palavras-chaves. Estas palavras podem ser automaticamente extraídas dos documentos, ou selecionadas por especialistas humanos. De qualquer forma, isto gera uma visão lógica dos documentos.

Arquivo invertido Arquivo invertido aplica-se ao tipo de índice que aponta os documentos que contém os diversos termos de um texto. Seguindo essa definição, um arquivo invertido apresenta, para cada termo do vocabulário, uma lista invertida, isto é, um conjunto de números de documentos contendo o termo.

� Arquivos invertidos são os mais utilizados, pela simplicidade de sua estrutura, eficiência nas buscas e possibilidade de compressão. Arquivos invertidos necessitam uma estrutura auxiliar: o vocabulário ou léxico, uma lista de todos os termos distintos que ocorrem no texto.

Page 13: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

13

Matriz de Frequência (Slide 16 aula3) Características de Arquivo Invertido (slide 19- aula3) As tabelas Hash (slide 20- aula3) Estrutura de Arquivos de Assinatura (slide 22- aula3) Estrutura de Árvore PAT (slide 28- aula3) Hipertextos e Grafo (slide 36- aula3)

Árvore Binária (Aula4-slide03) Tipos de Árvore Binária (Aula4-slide04) Percurso na Árvore Binária (Aula4-slide05) Árvore Binária de Busca (Aula4-slide09) Algoritmo de Busca (Aula4-slide11) Algoritmo de Inserção (Aula4-slide13) Algoritmo de Exclusão (Aula4-slide15) Algoritmo de Exclusão em C (Aula4-slide21) Árvore AVL (Aula 5)

Page 14: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

14

O LUCENE Lucene é um framework de alta performance para busca textual feito em java. (há versões para php e .net também) Uma das características marcantes dele é a integração com Hadoop. (um framework para computação distribuida - que possui, dentre outros, um MapReduce e um sistema de arquivos distribuido HDFS

Como isso funciona? A descrição a seguir é um resumo bem simplificado sobre o funcionamento de um motor de busca textual. A primeira fase, geralmente, é a indexação do documento, nessa fase o documento é analizado (por um Analizer que também já retira as stopwords) para posteriomente ser indexado.

Set stopWords = new HashSet();

stopWords.add("the");

stopWords.add("it");

stopWords.add("is");

IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR),

new StandardAnalyzer(Version.LUCENE_CURRENT,stopWords),

false,IndexWriter.MaxFieldLength.LIMITED);

No Lucene você pode criar um índice usando o IndexWriter, a criação desse objeto envolve dizer onde será (ou está) o diretório dos índices, qual analizador você irá utilizar, se irá criar o indice e qual a quantidade máxima de campos. O objetivo do indexador é indexar documentos, para tanto é necessário que haja documentos para serem indexados. Document doc = new Document();

doc.add(new Field("nomedocampo", "valores a serem guardados",

Field.Store.YES, Field.Index.NOT_ANALYZED));

doc.add(new Field("camp1","valores a serem analisados

tokenizados",Field.Store.YES, Field.Index.toIndex(true, true)));

writer.addDocument(doc);

É o objetivo final de todo processo de busca textual é mesmo a busca em si. String valueToBeSearched = "red";

String index = "indexDir"; //dirotorio base do indice

IndexReader reader = IndexReader.open(FSDirectory.open(new

File(index)), true); //indexador

Searcher searcher = new IndexSearcher(reader); //pesquisador

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,

analyzer); //transoformador do texto em uma query

Query query = parser.parse(valueToBeSearched); //a consulta (query) em

si

TopScoreDocCollector collector =

TopScoreDocCollector.create(hitsPerPage, false); //os melhores

resultados

searcher.search(query, collector);

ScoreDoc[] hits = collector.topDocs().scoreDocs; //o conjunto de

melhores documentos para a consulta

int maximo = hits.length;

Document doc = searcher.doc(hits[index].doc);

String valor = doc.get("nomeDoCampo");

Page 15: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

15

Recursos na busca de documentos Quando se faz uma pesquisa por documentos no Lucene podemos utilizar de alguns operadores (+, -, AND, NOT, OR, * e etc.) juntamente com o termo pesquisado ou apenas pesquisar uma frase completa. Exemplo : termo Consequência: Irá pesquisar a palavra "termo" nos documentos indexados. Exemplo : termo OR palavra ( == termo palavra) Consequência: Irá pesquisar "termo" ou "palavra" nos documentos indexados. Exemplo : +termo +palavra ( == termo AND palavra) Consequência: Irá pesquisar "termo" e "palavra" nos documentos indexados. Exemplo : campo:termo Consequência: Irá pesquisar "termo" no campo "campo" nos documentos indexados. Exemplo : +homer +simpsons -house Consequência: Irá pesquisar documentos que contenham homer e simpsons e não tenha house. Exemplo : "termo exato" Consequência: Irá pesquisar documentos que contenham exatamente "termo exato". Exemplo : java* Consequência: Irá pesquisar documentos que contenham palavras que começem com java (javadb, javanet...). Exemplo : java~ Consequência: Irá pesquisar documentos que contenham palavras similares a java como por ex. lava, jaba... Finalizando tive as seguintes impressões sobre essa nova versão do Lucene. Prós:

• Maior facilidade para uso do framework, ex: criações de Fields estão bem mais fluentes.

• Sensível otimização nos tempos de busca e indexação.

Contras:

• Otimas ferramentas como luke ainda não tem suporte para a versão 3.0.0. (mas já há uma solicitação aberta para tal mudança.)

• Muitas mudanças no core do framework; o que fez livros mais antigos quase perderem seu valor

Page 16: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

16

MB TEXT

A Máquina de Busca Textual que será criada “MBText” tem por objetivo indexar um conjunto de arquivos textuais a fim de localizar palavras e trechos dos mesmos.

Este sistema poderá, também, ser anexado em outros softwares a serem criados

em sistemas de empresas e sites. Portanto, outro objetivo se mostra intrínseco ao desenvolver do trabalho em si, o

desenvolver de um produto, não um produto qualquer mas um software, que possa entrar no mercado com condições de competir no mercado , se complementado e incorporado a sites e sistemas podendo o mesmo ser modificado, melhorado para melhor se adequar à necessidade proposta.

Page 17: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

17

8-CONCLUSÃO

A partir da pesquisa bibliográfica do tema proposto e da aprovação pelo professor coordenador do interdisciplinar para este grupo em questão foi desenvolvido este trabalho. Assim foi dada ênfase nas disciplinas de Linguagem e programação para a Web III, Máquina de Busca e Legislação Aplicada a Informática, visto que não há um tempo real (horário específico) para o desenvolvimento junto aos orientadores bem como o trabalho diurno dos alunos, juntamente com o excesso de trabalhos extraclasse dificultaram um melhor aproveitamento do tempo para viabilizar o desenvolvimento do trabalho/projeto de forma mais criteriosa e com uma abordagem de forma a abranger uma gama maior de conteúdo interdisciplinar . Portanto espera-se dar prosseguimento ao projeto mesmo após o curso afim de vê-lo aperfeiçoado, corrigido e incrementado para que possa , em futuro próximo inserido no mercado de forma competitiva e atrativa aos olhos de seus usuários.

Page 18: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

18

9-BIBLIOGRAFIA

UNIPAC,Universidade Presidente Antônio Carlos. Manual de Orientação do Trabalho Interdisciplinar de Conclusão de Módulo.Unipac.2ºsemestre2011. MANZANO, José A.N.Garcia.JÚNIOR, Roberto A. da Costa.JAVA2 Programação de Computadores.Guia Básico de Introdução, Orientação e Desenvolvimento.São Paulo: Erica. .2006.368p. FREEMAN,Elizabeth. FREEMAN,Erick . Use a Cabeça HTML com CSS e XHTML Rio de Janeiro: AltaBooks. 2008. 2ªed 616p(Tradução Betina Macêdo). SIERRA, Kato.BATES, Bert.Java.Use a Cabeça!.Rio de Janeiro: AltaBooks. 2010.2ªed 488p; SOUZA, Emmanuel Cássio Oliveira. Criando textos segundo as normas da ABNT. Scelisual, 2005. 41 p MOREIRA.Leandro.Lucene,Um Motor de Busca Textual <http://archsofty.blogspot. com /2009/12 /tutorial-apache-lucene-300-motor-de.html>Acesso em: PAMPLONA,Vitor.Introdução ao Apache Lucene <http://vitorpamplona.com> Acesso em: SONAWANE,Amol.Usando o Apache Lucene Para Procura de Texto <http://www.ibm.com/developerworks/br/java/library/os-apache-lucenesearch/index.html> Acesso em:

Page 19: Implementacao de Uma Maquina de Busca Com o Lucene-1.0

19

Exemplos de Citações: Segundo Vaz (2008, p. 63) “não saber usar a internet em um futuro próximo será como não saber abrir um livro ou acender um fogão, não sabermos algo que nos permita viver a cidadania na sua completitude”. “Uma das referências mais conhecidas a respeito do conceito de padrão de projeto é o livro A Timeless Way of Building, escrito em 1979 pelo arquiteto Christopher Alexander” (KOSCIANSKI; SOARES, 2007, p. 289, grifo do autor). “Não saber usar a internet em um futuro próximo será como não saber abrir um livro ou acender um fogão, não sabermos algo que nos permita viver a cidadania na sua completitude” (VAZ, 2008, p. 63). Tanto Weaver (2002, p.18) como Semonche (1993, p. 21) apontam questionamentos que devem preceder o planejamento da indexação de artigos de jornais, como: Qual a finalidade do artigo? Quem é o público-alvo que terá acesso ao artigo? Que tipo de informação o usuário procura?

Exemplo de citação com mais de 3 linhas com autor inserido entre parênteses, no final da citação:

Exemplo de citação com mais de 3 linhas com autor inserido no texto: Oliveira (2003, p. 39) ao abordar sobre ciência destaca que a mesma é