Escolar Documentos
Profissional Documentos
Cultura Documentos
Implementacao de Uma Maquina de Busca Com o Lucene PDF
Implementacao de Uma Maquina de Busca Com o Lucene PDF
MBText
Contagem
2 semestre de 2011
2
MBText
Contagem
2. Semestre de 2011
3
SUMRIO
1 - INTRODUO
2 -OBJETIVO
3 -INTERDISCIPLINARIDADE
3.1 ARQUITETURA DE MQUINAS DE BUSCA
3.2 LINGUAGEM DE PROGRAMAO PARA WEB III
3.3 LEGISLAO APLICADA INFORMTICA
4- CONCEITOS BSICOS
4.1-O QUE UMA MQUINA DE BUSCA
4.2-PORQUE USAR UMA MQUINA DE BUSCA TEXTUAL
5- TIPOS DE MQUINAS DE BUSCA:
6-O SISTEMA DE RECUPERAO DA INFORMAO (SRI)
7- O LUCENE
5.1
5.2
5.3
8- O MBText
6.1
6.2
6.3
9- CONCLUSO
10- BIBLIOGRAFIA
9-ANEXOS
4
1-INTRODUO
2-OBJETIVOS
Ser desenvolvido um software que ir utilizar a biblioteca LUCENE onde sero
mostrados suas funcionalidades e principais caractersticas sobre mquinas de busca.
A Mquina 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, tambm, ser anexado em outros softwares a serem criados
em sistemas de empresas e sites.
3-INTERDISCIPLINARIDADE
4-Conceitos Bsicos
4.3.1 Histrico
Os primrdios da recuperao da Informao ocorreu a aproximadamente
quarenta (40) sculos atrs com os brmanes e suas escritas sumrias,
posteriormente na dcada de quarenta (40) no sculo XX foi estudada por
Bush(1941) e Weaver (1949). Em 1951 Mooers criou o termo : Recuperao
da Informao.
8
4.5 Estrutura
Etapas:
Histrico:
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
10
4.1-COLETOR:
4.2-ARMAZENAMENTO:
Consiste no armazenamento de pginas de diversos formatos: html, txt, doc,
pdf, dentre outros. Atualmente o texto das figuras tambm indexado.
4.3-INDEXAO:
Consiste no retorno das informaes sobre as pginas, onde estas informaes
devero ser armazenadas de modo a serem utilizadas para responder a posteriores
perguntas de usurios.Este processo pode variar de mquina de busca para mquinas de
busca.
4.3.1-Caractersticas da indexao :
Quando a indexao feita de forma automtica, pode variar em sofisticao a
fim de melhorar a preciso de resposta, assim os documentos s serem indexados, o sero
por frequncia de palavras e frases, atribuindo ou no pesos para as posies ondem
aparecem as palavras. Como exemplo temos uma palavra no ttulo da pgina com maior
peso que uma palavra no texto. Outro exemplo consiste na utilizao de meta tags
supracitadas tambm pode ser usada nesta fase.
4.3.2-Velocidade de indexao :
O processo de indexao utiliza-se de tempo. O site www. altavista. com.br
demora em torno de 6 semanas para que uma url achada pelo SPIDER (.) ser
listada na base de dados indexada e ser encontrada, conforme Mller (1999)
4.4-CONSULTA:
Com os passos anteriores a mquina de busca capaz de receber pedidos de
busca. A partir de um pedido requerido a mquina de busca no ndice entradas que
agrupam, ou seja, casem com o pedido de busca e ordena as respostas pelo que
determina ser mais importante.
5.1-Buscadores Globais:
Este modelo busca documentos na rede e apresenta-o de forma aleatria,
dependendo da quantidade de acesso ao site, dentre outros fatores. Um exemplo o
GOOGLE.
11
5.2-Buscadores Verticais:
Este tipo realiza pesquisas especializadas, com base de dados
prpria. 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 informaes esto
relacionadas a endereos de empresas e prestadores de servio. Geralmente so
cadastros de publicaes pagas. indicado para empresas que procuram oferecer
produtos e servios em uma regio exemplo: AcheCerto;
7-O LUCENE
Criado por Doug Cutting em 2000, o Lucene uma das mais famosas e mais usadas
bibliotecas para indexao e consulta de textos, disponvel em cdigo aberto. Sob o
domnio da Apache Foundation, a biblioteca, escrita em java, pode ser utilizada em
qualquer aplicativo J2SE ou J2EE, de cdigo aberto ou no. Outras linguagens como
Delphi, Perl, C#, C++, Python, Ruby , PHP e JAVA, devem usar os ports do Lucene
para as referidas linguagens. (<http://vitorpamplona.com/wiki/Introdu%C3%A7%C3%
A3o%20ao%20Apache%20Lucene>)
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);
Visto que o objetivo final de todo processo de busca textual mesmo a busca em si.
Exemplo : termo
Consequncia: pesquisar a palavra "termo" nos documentos indexados.
Exemplo : campo:termo
Consequncia: pesquisar "termo" no campo "campo" nos documentos indexados.
Exemplo : java*
Consequncia: pesquisar documentos que contenham palavras que comeem com java
(javadb, javanet...).
14
Exemplo : java~
Consequncia: pesquisar documentos que contenham palavras similares a java como por
ex. lava, jaba...
(fonte:.....)
8-MB TEXT
A Mquina 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, tambm, ser anexado em outros softwares a serem criados
em sistemas de empresas e sites.
A desenvolver
15
9-CONCLUSO
O Lucene desenvolveu vrios aplicativos de procura utilizados por vrios Web sites e
organizaes famosos. Ele suporta vrias outras linguagens de programao. O Lucene
possui uma grande e ativa comunidade tcnica do usurio. Se voc est a procura de
uma biblioteca de procura de software livre de alto desempenho, escalvel e fcil de
usar, o Apache Lucene uma tima escolha.
10-BIBLIOGRAFIA
UNIPAC,Universidade Presidente Antnio Carlos. Manual de Orientao do
Trabalho Interdisciplinar de Concluso de Mdulo.Unipac.2semestre2011.
Lucene <http://www.ibm.com/developerworks/br/java/library/os-apache-
lucenesearch/index.html> Acesso em: 28/9/11
ANEXO I
17
LUCENE:
Fonte:http://www.ibm.com/developerworks/br/java/library/os-apachelucenesearch/
index.html
Introduo
Indexando Dados
O Processo de Indexao
Anlise
Diretrio
Uma classe abstrata que representa o local onde os arquivos de ndice so
armazenados. H duas subclasses principais normalmente usadas:
Analisador
Conforme j falado, os analisadores so responsveis por processar os
dados de texto e convert-los em tokens armazenados no ndice. IndexWriter
aceita um analisador usado para tokenizar os dados antes de serem indexados.
Para indexar o texto corretamente, use um analisador que seja apropriado para o
idioma do texto que precisa ser indexado.
20
IndexDeletionPolicy
Uma interface usada para implementar uma poltica para customizar a
excluso de consolidaes obsoletas do diretrio de ndice. A poltica de
excluso padro KeepOnlyLastCommitDeletionPolicy, que mantm apenas as
consolidaes mais recentes e remove imediatamente todas as consolidaes
anteriores depois que a nova consolidao for feita.
IndexWriter
Um classe que cria ou mantm um ndice. Seu construtor aceita um
booleano que determina se um novo ndice criado ou se um ndice existente
aberto. Ele fornece mtodos para incluir, excluir ou atualizar documentos no
ndice.
Field senderField =
new Field("sender",sender,Field.Store.YES,Field.Index.NOT_ANALYZED);
Field emaildatefield =
new
Field("date",date,Field.Store.NO,Field.Index.NOT_ANALYZED);
Field subjectField =
new Field("subject",subject,Field.Store.YES,Field.Index.ANALYZED);
Field messagefield =
new
Field("message",message,Field.Store.NO,Field.Index.ANALYZED);
Field emailDocField =
new Field("emailDoc",emaildoc,Field.Store.YES,
Field.Index.NO);
22
Procurador
Procurador uma classe base abstrata que possui vrios mtodos de procura
sobrecarregadas. IndexSearcher uma subclasse normalmente utilizada que permite
procurar ndices armazenados em um determinado diretrio. O mtodo Procurar retorna
uma coleta ordenada de documentos classificados pelas pontuaes computadas. O
Lucene calcula uma pontuao de cada documento que corresponde a uma determinada
consulta. IndexSearcher um thread-safe, ou seja, uma instncia nica que pode ser
usada por vrios encadeamentos simultaneamente.
Termo
Consulta e Subclasses
Consulta uma classe base abstrata para procuras. Procurar por uma palavra ou
frase especificada envolve agrup-la em um termo, incluir os termos em um objeto de
consulta e transmitir esse objeto de consulta para os mtodos de procura do Index
Searcher.
TermQuery
O tipo de consulta mais bsico para procurar um ndice.TermQuery pode ser
construdo usando um termo nico. O valor do termo deve fazer distino entre
maisculas e minsculas, mas isso no totalmente verdade. importante notar que os
23
termos transmitidos para procura devem ser consistentes com os termos produzidos pela
anlise de documentos, porque os analisadores executam muitas operaes no texto
original antes de criar um ndice.
RangeQuery
PrefixQuery
Voc pode procurar usando uma palavra prefixada com o PrefixQuery, que
usado para contruir uma consulta que corresponda aos documentos que contm os
termos que iniciam com um prefixo de palavra especificada.
//Procurar e-mails que possuem o campo remetente prefixado pela palavra 'job'
PrefixQuery prefixQuery = new PrefixQuery(new Term("sender","job"));
PrefixQuery query = new PrefixQuery(new Term("sender","job"));
24
BooleanQuery
Voc pode construir consultas poderosos ao combinar qualquer nmero de
objetos de consulta usando o BooleanQuery. Ele usa o query e uma clusula associada a
uma consulta que indica se uma consulta pode ocorrer, deve ocorrer ou no deve
ocorrer. Em um BooleanQuery, o nmero mximo de clusulas restrito a 1.024, por
padro. possvel configurar o mximo de classes ao chamar o mtodo
setMaxClauseCount .
PhraseQuery
/* Exemplo de PhraseQuery: Procurar e-mails que possuem a frase 'job opening j2ee'
no campo de assunto.*/
PhraseQuery query = new PhraseQuery();
query.setSlop(1);
query.add(new Term("subject","job"));
query.add(new Term("subject","opening"));
query.add(new Term("subject","j2ee"));
WildcardQuery
Um WildcardQuery implementa uma consulta com caractere curinga, podendo
fazer procuras como arch* (permitindo localizar documentos que contm architect,
architecture, etc.). Dois caracteres curingas padro so usados:
? para um ou mais
FuzzyQuery
QueryParser
QueryParser til para analisar cadeias de consultas inseridas pelo usurio. Ele
pode ser usado para analisar expresses de consultas inseridas pelo usurio em um
objeto de consulta do Lucene, que pode ser transmitido para o mtodo de procura do
IndexSearcher.Ele pode analisar expresses de consultas completas. QueryParser
converte internamente uma cadeia de consulta inserida pelo usurio em uma das
subclasses de consulta concretas. necessrio escapar caracteres especiais, como *, ?
com uma barra invertida (\). Voc pode construir consultas booleanas textualmente
usando os operadores AND, OR e NOT.
ScoreDoc
TopDocs
IndexReader uma classe abstrata que fornece vrios mtodos para acessar o
ndice. O Lucene refere internamente os documentos com nmeros de documentos que
podem ser alterados conforme os documentos so includos ou excludos do ndice. O
nmero do documento usado para acessar um documento no ndice. IndexReader no
pode ser usado para atualizar ndices em um diretrio para o qual o IndexWriter j est
aberto. IndexReader sempre procura pela captura instantnea do ndice quando ele
estiver aberto. Quaisquer alteraes no ndice no estaro visveis at o IndexReader ser
reaberto. importante que os aplicativos que usam o Lucene reabram os
IndexReaderpara ver as atualizaes de ndice mais recentes.
27
s vezes voc pode querer dar mais importncia a alguns dos dados indexados.
Voc pode querer fazer isso ao configurar um fator de impulso para um documento ou
campo.Por padro, todos os documentos e campos possuem o mesmo fator de impulso
padro de 1.0.
Estendendo a Procura
ANEXO II
Introduo ao Apache Lucene
Criado por Doug Cutting em 2000, o Lucene uma das mais famosas e mais
usadas bibliotecas para indexao e consulta de textos, disponvel em cdigo aberto.
Sob o domnio da Apache Foundation, a biblioteca, escrita em java, pode ser utilizada
em qualquer aplicativo J2SE ou J2EE, de cdigo aberto ou no. Outras linguagens como
Delphi, Perl, C#, C++, Python, Ruby , PHP e JAVA, devem usar os ports do Lucene
para as referidas linguagens.
Instalao
Lucene em 5 minutos
Crie um projeto Java e uma classe principal com um mtodo main , onde
devero ser colocados todos os cdigos aqui apresentados. Este resumo foi baseado no
tutorial Lucene in 5 minutes.
// Cria o analyzador
StandardAnalyzer analyzer = new StandardAnalyzer();
// Diretrio virtual para o ndice
Directory indexDirectory = new RAMDirectory();
// Cria o arquivo com tamanho ilimitado.
IndexWriter w = new IndexWriter(indexDirectory, analyzer, true,
IndexWriter.MaxFieldLength.UNLIMITED);
// Adiciona 4 documentos.
addDoc(w, "Lucene in Action");
addDoc(w, "Lucene for Dummies");
addDoc(w, "Managing Gigabytes");
addDoc(w, "The Art of Computer Science");
32
// Fecha o arquivo.
w.close();
O mtodo addDoc cria um novo documento, adiciona um texto (text) como ttulo
deste documento e configura este ttulo para ser armazenado e analizado.
Criando a Consulta
Agora que o ndice est pronto, podemos criar uma consulta no campo de ttulo
com o texto Lucene . Neste caso, a biblioteca deve retornar os documentos 1 e 2
como possveis respostas a esta consulta.
Por exemplo, a entrada The earth, the skies and the space sem stemming,
sem stop words e com nmero mximo de 2 sinnimos por palavras resulta na sada
the earth world globe the skies and the space quad blank .