Upload
internet
View
118
Download
8
Embed Size (px)
Citation preview
i-Jusi-JusBusca em Diário OficialBusca em Diário Oficial
Bruno Edson FilhoBruno Edson FilhoDaniel Marques OliveiraDaniel Marques Oliveira
José de Anchieta Caraciolo NettoJosé de Anchieta Caraciolo NettoMax José Lins TímoteoMax José Lins Tímoteo
RoteiroRoteiro
MotivaçãoMotivação Arquitetura Básica do LuceneArquitetura Básica do Lucene Componentes do sistemaComponentes do sistema Estrutura do ArquivoEstrutura do Arquivo ConsultasConsultas ResultadosResultados
MotivaçãoMotivação
AnchietaAnchieta
ContextoContexto
Necessidade de Necessidade de buscar informações nos buscar informações nos Diários Oficiais do paísDiários Oficiais do país (advogados (advogados autônomos, escritórios, empresas autônomos, escritórios, empresas terceirizadas pelos escritórios, etc.)terceirizadas pelos escritórios, etc.)
Os sites existentes Os sites existentes são muito confusos e são muito confusos e apresentam muita dificuldade quando se apresentam muita dificuldade quando se procura informações, pois são publicados procura informações, pois são publicados como um documento inteiro ou são como um documento inteiro ou são publicados em partes menores.publicados em partes menores.
ExemplosExemplos
Diário Oficial de PernambucoDiário Oficial de Pernambuco http://www.fisepe.pe.gov.br/cepe/diario.htmhttp://www.fisepe.pe.gov.br/cepe/diario.htm
Diário Oficial da União Diário Oficial da União (http://www.in.gov.br/)(http://www.in.gov.br/) Diários Oficiais EletrônicosDiários Oficiais Eletrônicos
http://ediarios.in.gov.br/ediarios/pages/seguranca/http://ediarios.in.gov.br/ediarios/pages/seguranca/login.jsplogin.jsp
PrivadosPrivados Ledj (Sistema de Leitura Eletrônica dos Diários Ledj (Sistema de Leitura Eletrônica dos Diários
Oficiais e da Justiça)Oficiais e da Justiça) http://www.ledj.com.br/http://www.ledj.com.br/
DOINET (Diário Oficial na Internet)DOINET (Diário Oficial na Internet) http://www.doi.com.br/http://www.doi.com.br/
SoluçãoSolução
Um sistema com Um sistema com interface simples e agradável, interface simples e agradável, semelhante aos sistemas de busca conhecidos semelhante aos sistemas de busca conhecidos (Ex: Google, Yahoo!, Radix)(Ex: Google, Yahoo!, Radix)
Busca nos Diários OficiaisBusca nos Diários Oficiais Termos (Termos (frase exata e expressões boleanas)frase exata e expressões boleanas) Critérios de ordenação (Critérios de ordenação (data de publicação ou data de publicação ou
relevânciarelevância)) ResultadosResultados
Data de publicaçãoData de publicação Documento em cache com salientadorDocumento em cache com salientador Local do Diário OficialLocal do Diário Oficial Endereço da versão OficialEndereço da versão Oficial
Arquitetura Básica do Arquitetura Básica do LuceneLucene
Bruno EdsonBruno Edson
Arquitetura Arquitetura Básica do Básica do LuceneLucene
Arquitetura Básica - LuceneArquitetura Básica - Lucene
Objetos de acesso à dados Objetos de acesso à dados (acessíveis)(acessíveis)
Camada de negóciosCamada de negócios acesso aos arquivos de índices (sistema)acesso aos arquivos de índices (sistema)
Camada de pesquisa (parser) / Camada de pesquisa (parser) / IndexaçãoIndexação
7 pacotes (org.apache.lucene.*):7 pacotes (org.apache.lucene.*): analisys, document, index, queryparser, analisys, document, index, queryparser,
search, store, utilsearch, store, util
Pacotes - LucenePacotes - Lucene
analysys: converter texto -> índicesanalysys: converter texto -> índices document: relacionada a arquivosdocument: relacionada a arquivos index: relacionada aos índicesindex: relacionada aos índices queryparser: QueryParser, parser queryparser: QueryParser, parser
consultaconsulta search: busca pelos índicessearch: busca pelos índices store: abstração dados (BD, arq., RAM)store: abstração dados (BD, arq., RAM) util: utilizado pelos outros (vetor, tabela)util: utilizado pelos outros (vetor, tabela)
Tipos de Campos - LuceneTipos de Campos - Lucene
Field.KeywordField.Keyword Field.UnIndexedField.UnIndexed Field.UnStoredField.UnStored Field.TextField.Text
Fluxo de Execução - LuceneFluxo de Execução - Lucene Consulta:Consulta:
QueryParser: Traduzir a consultaQueryParser: Traduzir a consulta Realiza a consultaRealiza a consulta Obtém acesso aos índicesObtém acesso aos índices Obtém acesso aos arquivos (BD, arq., Obtém acesso aos arquivos (BD, arq.,
RAM)RAM) Indexação:Indexação:
Aquisição do documento (processamento)Aquisição do documento (processamento) Análise (gera índices)Análise (gera índices) Grava nos índicesGrava nos índices Grava nos arquivos (BD, arq., RAM)Grava nos arquivos (BD, arq., RAM)
Componentes do Componentes do SistemaSistema
DanielDaniel
Componentes do SistemaComponentes do Sistema
Indexador
Índice Invertido
Analisador HTML
Pesquisador
HTTrackAnalisador
Léxico
Analisador LéxicoConsulta
Parser da Consulta
Componentes do SistemaComponentes do Sistema
Analisador LéxicoAnalisador Léxico Converte todas as letras para minúsculasConverte todas as letras para minúsculas Retira pontos, barras e hífen de números Retira pontos, barras e hífen de números
de identificação concatenando as suas de identificação concatenando as suas partespartes
CPF, CNPJ, RG, OAB etcCPF, CNPJ, RG, OAB etc Retira pontos, barras, hífen e espaços Retira pontos, barras, hífen e espaços
presentes no meio de frasespresentes no meio de frases Retira acentos e cedilhasRetira acentos e cedilhas Retira stopwordsRetira stopwords
Campos ExistentesCampos Existentes
Título (Field.Text) Título (Field.Text) Publicação (Field.Keyword)Publicação (Field.Keyword) Site (Field.Keyword) Site (Field.Keyword) Cache (Field.UnIndexed) Cache (Field.UnIndexed) Arquivo (Field.UnIndexed)Arquivo (Field.UnIndexed) Conteudo (Field.Text)Conteudo (Field.Text)
Estrutura do ArquivoEstrutura do ArquivoBruno EdsonBruno Edson
Estrutura do ArquivoEstrutura do Arquivo
Estrutura de ÍndicesEstrutura de Índices Multi-índiceMulti-índice CompostoComposto
Conteúdo:Conteúdo: SegmentosSegmentos DocumentosDocumentos CamposCampos TermosTermos
Escolha de estrutura de índicesEscolha de estrutura de índices
Cálculo do nº. de arquivos abertosCálculo do nº. de arquivos abertos Multi = 15300 (índices e campos)Multi = 15300 (índices e campos) Composto = 900 (índices)Composto = 900 (índices)
PerformancePerformance Composto é 5-10% mais lenta que o Composto é 5-10% mais lenta que o
multimulti Composto é default.Composto é default.
Arquivos de Índices CompostosArquivos de Índices Compostos
Diferença visívelDiferença visível Multi = 10 arq’s.Multi = 10 arq’s. Composto = 2 arq’s.Composto = 2 arq’s.
Poucos recursosPoucos recursos Redução do número de arquivosRedução do número de arquivos
Exceto: segmentos, documentos, Exceto: segmentos, documentos, campos e termos.campos e termos.
Único .csf por segmentoÚnico .csf por segmento
Arquivos de Índices CompostosArquivos de Índices Compostos
Exemplo:Exemplo: Multi:Multi:
Composto:Composto:
Criando um índice compostoCriando um índice composto
Opção defaultOpção default Explicitar no códigoExplicitar no código
Método: setUseCompound(boolean)Método: setUseCompound(boolean)IndexWriter writer = new IndexWriter writer = new
IndexWriter(indexDir,IndexWriter(indexDir,
new StandardAnalyzer(), true);new StandardAnalyzer(), true);
writer.setUseCompoundFile(true);writer.setUseCompoundFile(true);
Possibilidade de trocaPossibilidade de troca
Conversão entre estruturasConversão entre estruturas
Suporte durante indexaçãoSuporte durante indexação IndexWriterIndexWriter setUseCompoundFiles(boolean)setUseCompoundFiles(boolean) Código:Código:
IndexWriter writer = new IndexWriter(indexDir,IndexWriter writer = new IndexWriter(indexDir,
new StandardAnalyzer(), false);new StandardAnalyzer(), false);
writer.setUseCompoundFile(true);writer.setUseCompoundFile(true);
writer.optimize();writer.optimize();
writer.close();writer.close();
ConsultasConsultas
MaxMax
ConsultaConsulta
Biblioteca LuceneBiblioteca Lucene IndexSearcherIndexSearcher Query (e subclasses)Query (e subclasses) QueryParserQueryParser HitsHits
ConsultaConsulta
Idéia básica de uma consultaIdéia básica de uma consulta QueryParserQueryParser QueryQuery IndexSearcherIndexSearcher HitsHits DocumentDocument
ConsultaConsulta
Tipos de consultaTipos de consulta Or (padrão):Or (padrão):
termo1 termo2termo1 termo2 Termo1 OR termo2Termo1 OR termo2
And:And: +termo1 +termo2+termo1 +termo2 termo1 AND termo2termo1 AND termo2
Parênteses:Parênteses: (termo1 OR termo2) AND termo3(termo1 OR termo2) AND termo3
......
ConsultaConsulta
Tipos de consultaTipos de consulta Expressão(retirando stopwords):Expressão(retirando stopwords):
““termo1 termo2”termo1 termo2” *:*:
termo1*termo1* Palavras semelhantes:Palavras semelhantes:
termo1~termo1~
ScoreScore
TiposTipos PublicaçãoPublicação RelevânciaRelevância
ScoreScore
Biblioteca LuceneBiblioteca Lucene Métodos da classe Hits:Métodos da classe Hits:
length()length() doc(n)doc(n) id(n)id(n) score(n)score(n)
ResultadosResultados
DanielDaniel
ResultadosResultados
Quantidade de termosQuantidade de termos 200.000200.000
Quantidade de documentosQuantidade de documentos 18001800
Muitos nomes frequentesMuitos nomes frequentes SistemaSistema
http://ijuz.no-ip.info/http://ijuz.no-ip.info/jurijuri Ou Ou http://201.8.211.225/http://201.8.211.225/jurijuri Obs: o sistema está rodando no computador de Obs: o sistema está rodando no computador de
Daniel (dmo), quando quiser acessar programar Daniel (dmo), quando quiser acessar programar um horário para que ele ative o sistemaum horário para que ele ative o sistema
ReferênciasReferências Gospodnetic, Otis & Hatcher, Erik. Lucene in Gospodnetic, Otis & Hatcher, Erik. Lucene in
action. Manning Publications Co, 2005.action. Manning Publications Co, 2005. CyberNeko Tools for XNI. CyberNeko Tools for XNI.
http://www.apache.org/~http://www.apache.org/~andycandyc//nekoneko/doc/doc.. Jakarta Lucene. Jakarta Lucene. httphttp://://jakartajakarta.apache..apache.orgorg//lucenelucene.. JLex: A Lexical Analyzer Generator for Java(TM). JLex: A Lexical Analyzer Generator for Java(TM).
httphttp://www.://www.cscs..princetonprinceton..eduedu/~/~appelappel//modernmodern//javajava//JLexJLex//..
Baeza-Yates, Ricardo & Ribeiro-Neto, Berthier. Baeza-Yates, Ricardo & Ribeiro-Neto, Berthier. Modern Information Retrieval. ACM Press, 1999.Modern Information Retrieval. ACM Press, 1999.
CEPE - Diário Oficial do Estado de Pernambuco. CEPE - Diário Oficial do Estado de Pernambuco. httphttp://www.://www.fisepefisepe.pe..pe.govgov..brbr//cepecepe//diariodiario..htmhtm..