Recuperação Inteligente de Informação
O Apache Lucene
João dos Prazeres
Flávia Barros (revisora)
CIn-UFPE
1
2
Roteiro da Aula
O que é o Lucene
Indexação
Busca
Consultas
Um exemplo prático
CIn-UFPE
3
O que é o Lucene
É um software de código livre da Apache
Biblioteca para recuperação de informação
Adiciona funcionalidades de indexação e
busca de “texto” para uma aplicação Java

Não é uma aplicação em si
Requer uma compreensão mínima sobre
indexação e busca
CIn-UFPE
4
O que é o Lucene
Libera a
aplicação para
lidar apenas
com regras de
negócio do seu
domínio
principal
CIn-UFPE
5
Indexação
A base de índices contém um conjunto de
documentos:



Um Document é uma coleção de Fields
Um Field é uma seqüência de Terms
Um Term é uma string
CIn-UFPE
6
Classes de Indexação
IndexWriter

classe principal para criar a base de índices
Document


objeto que representa o conteúdo a ser
adicionado
IndexWriter.addDocument(Document)
StandardAnalyzer

converte todos as strings para minúsculo e extrai
as stopwords
CIn-UFPE
7
Indexação
IndexWriter writer = new IndexWriter(file, new
standardAnalyzer(), true);
Document doc = new Document();
doc.add(new Field("contents", <conteúdo do arquivo>));
writer.addDocument(doc);
writer.close;
CIn-UFPE
8
Classes de Busca
IndexSearcher

classe principal para buscar na base de índices
StandardAnalyzer

o mesmo usado na indexação
Query

contém o resultado de QueryParser
QueryParser

Usa o analisador para processar o texto da query.
Hits

Contém uma coleção de Documents de resposta.
CIn-UFPE
9
Busca
IndexReader reader = IndexReader.open(index); //várias formas
Searcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser(<campo>, analyzer);
Query query = parser.parse(line);
Hits hits = searcher.search(query);
for (int i = 0; i < hits.length(); i++) {
Document doc = hits.doc(i);
System.out.println(" Title: " + doc.get("title"));
}
CIn-UFPE
10
Tipos de Queries
Termos simples e frases

title:"The Right Way" AND text:go
Com caracteres “curinga” em termos simples

te?t ou ainda test*
Fuzzy usando “~” para termos simples


baseado na distância de Levenshtein
roam~ ou ainda roam~0.8
CIn-UFPE
11
Tipos de Queries
Com operador NOT

"jakarta apache" NOT "Apache Lucene"
Combinando operadores

(jakarta OR apache) AND website
CIn-UFPE
12
Referências
http://lucene.apache.org/
http://www.onjava.com/pub/a/onjava/2006/0
1/18/using-lucene-to-search-java-source.html
CIn-UFPE
Download

Lucene