i-Jus
Busca em Diário Oficial
Bruno Edson Filho
Daniel Marques Oliveira
José de Anchieta Caraciolo Netto
Max José Lins Tímoteo
Roteiro






Motivação
Arquitetura Básica do Lucene
Componentes do sistema
Estrutura do Arquivo
Consultas
Resultados
Motivação
Anchieta
Contexto


Necessidade de buscar informações nos Diários
Oficiais do país (advogados autônomos,
escritórios, empresas terceirizadas pelos
escritórios, etc.)
Os sites existentes são muito confusos e
apresentam muita dificuldade quando se procura
informações, pois são publicados como um
documento inteiro ou são publicados em partes
menores.
Exemplos

Diário Oficial de Pernambuco


http://www.fisepe.pe.gov.br/cepe/diario.htm
Diário Oficial da União
(http://www.in.gov.br/)

Diários Oficiais Eletrônicos


http://ediarios.in.gov.br/ediarios/pages/seguranca/login.j
sp
Privados

Ledj (Sistema de Leitura Eletrônica dos Diários
Oficiais e da Justiça)


http://www.ledj.com.br/
DOINET (Diário Oficial na Internet)
Solução


Um sistema com interface simples e agradável,
semelhante aos sistemas de busca conhecidos
(Ex: Google, Yahoo!, Radix)
Busca nos Diários Oficiais



Termos (frase exata e expressões boleanas)
Critérios de ordenação (data de publicação ou
relevância)
Resultados




Data de publicação
Documento em cache com salientador
Local do Diário Oficial
Endereço da versão Oficial
Arquitetura Básica do
Lucene
Bruno Edson
Arquitetura
Básica do
Lucene
Arquitetura Básica - Lucene


Objetos de acesso à dados (acessíveis)
Camada de negócios



acesso aos arquivos de índices (sistema)
Camada de pesquisa (parser) / Indexação
7 pacotes (org.apache.lucene.*):

analisys, document, index, queryparser,
search, store, util
Pacotes - Lucene







analysys: converter texto -> índices
document: relacionada a arquivos
index: relacionada aos índices
queryparser: QueryParser, parser consulta
search: busca pelos índices
store: abstração dados (BD, arq., RAM)
util: utilizado pelos outros (vetor, tabela)
Tipos de Campos - Lucene




Field.Keyword
Field.UnIndexed
Field.UnStored
Field.Text
Fluxo de Execução - Lucene

Consulta:





QueryParser: Traduzir a consulta
Realiza a consulta
Obtém acesso aos índices
Obtém acesso aos arquivos (BD, arq., RAM)
Indexação:




Aquisição do documento (processamento)
Análise (gera índices)
Grava nos índices
Grava nos arquivos (BD, arq., RAM)
Componentes do
Sistema
Daniel
Componentes do Sistema
HTTrack
Consulta
Analisador
HTML
Parser da
Consulta
Analisador
Léxico
Analisador
Léxico
Pesquisador
Indexador
Índice Invertido
Componentes do Sistema

Analisador Léxico


Converte todas as letras para minúsculas
Retira pontos, barras e hífen de números de
identificação concatenando as suas partes




CPF, CNPJ, RG, OAB etc
Retira pontos, barras, hífen e espaços
presentes no meio de frases
Retira acentos e cedilhas
Retira stopwords
Campos Existentes






Título (Field.Text)
Publicação (Field.Keyword)
Site (Field.Keyword)
Cache (Field.UnIndexed)
Arquivo (Field.UnIndexed)
Conteudo (Field.Text)
Estrutura do Arquivo
Bruno Edson
Estrutura do Arquivo

Estrutura de Índices



Multi-índice
Composto
Conteúdo:




Segmentos
Documentos
Campos
Termos
Escolha de estrutura de índices

Cálculo do nº. de arquivos abertos



Performance


Multi = 15300 (índices e campos)
Composto = 900 (índices)
Composto é 5-10% mais lenta que o multi
Composto é default.
Arquivos de Índices Compostos



Diferença visível
Multi = 10 arq’s.
Composto = 2 arq’s.


Redução do número de arquivos


Poucos recursos
Exceto: segmentos, documentos, campos e
termos.
Único .csf por segmento
Arquivos de Índices Compostos

Exemplo:
Multi:

Composto:

Criando um índice composto


Opção default
Explicitar no código

Método: setUseCompound(boolean)
IndexWriter writer = new IndexWriter(indexDir,
new StandardAnalyzer(), true);
writer.setUseCompoundFile(true);

Possibilidade de troca
Conversão entre estruturas




Suporte durante indexação
IndexWriter
setUseCompoundFiles(boolean)
Código:
IndexWriter writer = new IndexWriter(indexDir,
new StandardAnalyzer(), false);
writer.setUseCompoundFile(true);
writer.optimize();
writer.close();
Consultas
Max
Consulta

Biblioteca Lucene




IndexSearcher
Query (e subclasses)
QueryParser
Hits
Consulta

Idéia básica de uma consulta





QueryParser
Query
IndexSearcher
Hits
Document
Consulta

Tipos de consulta

Or (padrão):
termo1 termo2
 Termo1 OR termo2


And:
+termo1 +termo2
 termo1 AND termo2


Parênteses:


...
(termo1 OR termo2) AND termo3
Consulta

Tipos de consulta

Expressão(retirando stopwords):


*:


“termo1 termo2”
termo1*
Palavras semelhantes:

termo1~
Score

Tipos


Publicação
Relevância
Score

Biblioteca Lucene

Métodos da classe Hits:
length()
 doc(n)
 id(n)
 score(n)

Resultados
Daniel
Resultados

Quantidade de termos


Quantidade de documentos



200.000
1800
Muitos nomes frequentes
Sistema



http://ijuz.no-ip.info/juri
Ou http://201.8.211.225/juri
Obs: o sistema está rodando no computador de
Daniel (dmo), quando quiser acessar programar um
horário para que ele ative o sistema
Referências






Gospodnetic, Otis & Hatcher, Erik. Lucene in action.
Manning Publications Co, 2005.
CyberNeko Tools for XNI.
http://www.apache.org/~andyc/neko/doc.
Jakarta Lucene. http://jakarta.apache.org/lucene.
JLex: A Lexical Analyzer Generator for Java(TM).
http://www.cs.princeton.edu/~appel/modern/java/JLex/.
Baeza-Yates, Ricardo & Ribeiro-Neto, Berthier. Modern
Information Retrieval. ACM Press, 1999.
CEPE - Diário Oficial do Estado de Pernambuco.
http://www.fisepe.pe.gov.br/cepe/diario.htm.
Download

Sistema de RI Jurídico