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