integrando recuperação de informação em banco …integrando recuperação de informação em...
TRANSCRIPT
![Page 1: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/1.jpg)
Integrando recuperação de informação em banco de dados com
Hibernate Search
Alunos
Gustavo Kendi Tsuji
Leonardo Tadashi Kamaura
Orientador
João Eduardo Ferreira
![Page 2: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/2.jpg)
Introdução
![Page 3: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/3.jpg)
Introdução
![Page 4: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/4.jpg)
Introdução
Média de 305% decrescimento de
usuários na internet
![Page 5: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/5.jpg)
Introdução
Média de 305% decrescimento de
usuários na internet=
Aumento do conteúdo na internet
produzido pelosusuários
![Page 6: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/6.jpg)
Introdução
A Google registrou em 29 de julho de 2008 a marca de mais de 1 trilhão de páginas disponíveis para
consulta a partir do seu site de buscaGoogle's search index hits one trillion page mark
http://en.wikinews.org/wiki/Google%27s_search_index_hits_one_trillion_page_mark
![Page 7: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/7.jpg)
Objetivos
• Estudar conceitos de Recuperação deInformação (RI);
![Page 8: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/8.jpg)
Objetivos
• Estudar conceitos de Recuperação deInformação (RI);
• Integrar uma solução de RI no banco de dadosdo Projeto Colméia;
![Page 9: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/9.jpg)
Visão Geral de RI
ArquivoInvertido
Query
![Page 10: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/10.jpg)
Visão Geral de RI
ArquivoInvertido Modelo Vetorial
Query Ranqueamento
![Page 11: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/11.jpg)
Visão Geral de RI
ArquivoInvertido Modelo Vetorial
Query Ranqueamento Resultados
![Page 12: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/12.jpg)
Arquivo Invertido
![Page 13: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/13.jpg)
Modelos
![Page 14: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/14.jpg)
Modelo Vetorial
Query
Termo 1 Termo 2 Termo n
Documento
Palavra-chave 1
Palavra-chave 2
Palavra-chave n
![Page 15: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/15.jpg)
Lucene
• projeto de código aberto da Apache implementadoem Java
• gera índices que serão usados na busca
• não é um programa final de busca
• não depende da fonte dos dados
• portável (Perl, Python, C++, .NET, Ruby)
![Page 16: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/16.jpg)
Hibernate Search
• Hibernate Annotations + Lucene
• busca full-text
![Page 17: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/17.jpg)
Hibernate / Hibernate Annotations
![Page 18: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/18.jpg)
Hibernate / Hibernate Annotations@Entity@Indexed@Table(name = "livro", schema = "public")public class Livro implements java.io.Serializable {
private Long idLivro;private String tituloOriginal;...
@Id
@DocumentId
@Column(name = "id_livro", nullable = false)
public Long getIdLivro() {return this.idLivro;
}
@Field(index=Index.TOKENIZED, store=Store.NO)
@Column(name = "titulo_original", length = 300)
public String getTituloOriginal() {return this.tituloOriginal;
}
![Page 19: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/19.jpg)
Hibernate / Hibernate Annotations@Entity@Indexed
@Table(name = "livro", schema = "public")public class Livro implements java.io.Serializable {
private Long idLivro;private String tituloOriginal;...
@Id@DocumentId
@Column(name = "id_livro", nullable = false)public Long getIdLivro() {
return this.idLivro;}
@Field(index=Index.TOKENIZED, store=Store.NO)
@Column(name = "titulo_original", length = 300)public String getTituloOriginal() {
return this.tituloOriginal;}
![Page 20: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/20.jpg)
Hibernate - Relacionamentos@Entity@Indexed@Table(name = "livro", schema = "public")public class Livro implements java.io.Serializable {
...private ItemAcervo itemAcervo;private Set<Subtitulo> subtitulos = new HashSet<Subtitulo>();...
@IndexedEmbedded
@OneToOne@PrimaryKeyJoinColumnpublic ItemAcervo getItemAcervo() {
return itemAcervo;}
@IndexedEmbedded
@OneToMany(fetch=FetchType.LAZY, mappedBy = "livro")public Set<Subtitulo> getSubtitulos() {
return subtitulos;}
![Page 21: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/21.jpg)
Hibernate Search
![Page 22: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/22.jpg)
Hibernate Search@Entity
@Indexed@Table(name = "livro", schema = "public")public class Livro implements java.io.Serializable {
private Long idLivro;private String tituloOriginal;...
@Id
@DocumentId@Column(name = "id_livro", nullable = false)public Long getIdLivro() {
return this.idLivro;}
@Field(index=Index.TOKENIZED, store=Store.NO)@Column(name = "titulo_original", length = 300)public String getTituloOriginal() {
return this.tituloOriginal;}
![Page 23: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/23.jpg)
Hibernate Search - Relacionamentos@Entity@Indexed@Table(name = "livro", schema = "public")public class Livro implements java.io.Serializable {
...private ItemAcervo itemAcervo;private Set<Subtitulo> subtitulos = new HashSet<Subtitulo>();...
@IndexedEmbedded@OneToOne@PrimaryKeyJoinColumnpublic ItemAcervo getItemAcervo() {
return itemAcervo;}
@IndexedEmbedded@OneToMany(fetch=FetchType.LAZY, mappedBy = "livro")public Set<Subtitulo> getSubtitulos() {
return subtitulos;}
![Page 24: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/24.jpg)
Hibernate Search - Relacionamentos@Entity@Table(name = "subtitulo", schema = "public")
@Embeddablepublic class Subtitulo implements java.io.Serializable {
private long idSubtitulo;private String subtitulo;private Livro livro;
@Id@Column(name = "id_subtitulo", nullable = false)public long getIdSubtitulo() {
return this.idSubtitulo;}
@Field(index=Index.TOKENIZED, store=Store.NO)@Column(name = "subtitulo", nullable = false, length = 100)public String getSubtitulo() {
return this.subtitulo;}
![Page 25: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/25.jpg)
Utilizando Hibernate Search naAplicação
![Page 26: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/26.jpg)
Processos
Back end
Aplicação
Hibernate
+
Hibernate Search
Índices
(Lucene)
Banco de dados
2
1
![Page 27: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/27.jpg)
Processos
![Page 28: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/28.jpg)
Processos
1
![Page 29: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/29.jpg)
Processos
2
![Page 30: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/30.jpg)
Indexação
![Page 31: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/31.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}
tx.commit();
}
![Page 32: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/32.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}
tx.commit();
}
![Page 33: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/33.jpg)
Hibernate Search - Indexação
Hibernate
Session
![Page 34: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/34.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}
tx.commit();
}
![Page 35: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/35.jpg)
Hibernate Search - Indexação
Hibernate
Session
Hibernate Search
FullTextSession Search
![Page 36: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/36.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}
tx.commit(); }
![Page 37: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/37.jpg)
Hibernate Search - Indexação
Banco de dados
Hibernate
Session
Transaction
Hibernate Search
FullTextSession Search
![Page 38: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/38.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}tx.commit();
}
![Page 39: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/39.jpg)
Hibernate Search - Indexação
Banco de dados
Hibernate
Session
Transaction
Hibernate Search
FullTextSession Search
Livros
![Page 40: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/40.jpg)
Hibernate Search - Indexação
public void indexaLivros(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
FullTextSession fullTextSession = Search.createFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
List<?> livros = session.createCriteria(Livro.class).list();
for (Object livro : livros) {
fullTextSession.index(livro);
}tx.commit();
}
![Page 41: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/41.jpg)
Hibernate Search - Indexação
Banco de dados
Hibernate
Session
Transaction
Hibernate Search
FullTextSession Search
Livros
![Page 42: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/42.jpg)
Busca
![Page 43: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/43.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome",
"livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 44: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/44.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome",
"livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 45: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/45.jpg)
Hibernate Search – Busca
Query
Termo
![Page 46: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/46.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome",
"livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 47: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/47.jpg)
Hibernate Search – Busca
Query
Termo Parâmetros
![Page 48: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/48.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 49: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/49.jpg)
Hibernate Search – Busca
Query
Termo Parâmetros Fields
![Page 50: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/50.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 51: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/51.jpg)
Hibernate Search – Busca
Lucene
StopAnalyser
Query
Termo Parâmetros Fields
![Page 52: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/52.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, newStopAnalyzer());org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 53: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/53.jpg)
Hibernate Search – Busca
Lucene
MultiFieldQueryParserStopAnalyser
Query
Termo Parâmetros Fields
![Page 54: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/54.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);
}
![Page 55: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/55.jpg)
Hibernate Search – Busca
Lucene
MultiFieldQueryParserStopAnalyser Query
Query
Termo Parâmetros Fields
![Page 56: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/56.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);return ajustaPaginacao(session, indice, maximo);
}
![Page 57: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/57.jpg)
Hibernate Search – Busca
Lucene
MultiFieldQueryParserStopAnalyser Query
Hibernate Search
FullTextQuery
Query
Termo Parâmetros Fields
![Page 58: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/58.jpg)
Hibernate Search – Busca
public List<Livro> buscaLivro(String termo, int indice, int maximo) throws Exception {
String[] fields = {"tituloOriginal", "subtitulos.subtitulo", "livrosAutores.autor.nome ", "livroEditoraCidade.editora.editora", "assuntosDedalus"};
MultiFieldQueryParser parser = new MultiFieldQueryParser(fields, new StopAnalyzer());
org.apache.lucene.search.Query luceneQuery = null;
try {
luceneQuery = parser.parse(termo);
} catch (ParseException e) {
e.printStackTrace();
}
org.hibernate.search.FullTextQuery fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery , Livro.class);
return ajustaPaginacao(session, indice, maximo);}
![Page 59: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/59.jpg)
Hibernate Search – Busca
Lucene
MultiFieldQueryParserStopAnalyser Query
Hibernate Search
FullTextQuery
Query
Termo Parâmetros Fields
Livros
![Page 60: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/60.jpg)
Score
![Page 61: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/61.jpg)
Lucene - Score
• É uma combinação do Modelo de Espaço Vetorial e doModelo Booleano.
• O score de uma query q para um documento d correlaciona à distância do coseno ou ao produto escalar entre vetores de documentos e queries no Modelo de Espaço Vetorial.
dt
dt,normgetBoostttidfdttfdq,queryNormdq,coord=dq,scorein
2.in
Fórmula:
![Page 62: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/62.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
dt,normgetBoostttidfdq,queryNormdq,coord=dq,scorein
2.d in ttf
![Page 63: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/63.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
dt,normgetBoosttdttfdq,queryNormdq,coord=dq,scorein
.in 2tidf
![Page 64: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/64.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
dt,normgetBoostttidfdttfdq,queryNorm=dq,scorein
2.in dq,coord
![Page 65: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/65.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
dt,normgetBoostttidfdttfdq,coord=dq,scorein
2.in dq,queryNorm
![Page 66: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/66.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
dt,normtidfdttfdq,queryNormdq,coord=dq,scorein
2in t.getBoost
![Page 67: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/67.jpg)
Lucene - Score
tf(t in d): term frequencyO número de vezes que o termo t ocorre no documento d
idf(t in d): inverse document frequencyO número de documentos que contêm o termo t
coord(q, d): fatorbaseado na quantidade de termos da query q que são encontrados no documento d
queryNorm(q, d): fator de normalizaçãousada para permitir a comparação entre os scores das queries
t.getBoost():atribui peso para o termo t na query q em tempo de busca
norm(t, d):encapsula alguns fatores de boost em tempo de indexação
dt
getBoostttidfdttfdq,queryNormdq,coord=dq,scorein
2.in dt,norm
![Page 68: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/68.jpg)
Lucene - Score
Query: Information RetrievalResultado: Information analysis and retrieval4.734231 = (MATCH) sum of:1.9067632 = (MATCH) weight(tituloOriginal:information in 2099), product of:0.6346345 = queryWeight(tituloOriginal:information), product of:
6.009012 = idf(docFreq=36, numDocs=5541)0.105613776 = queryNorm
3.004506 = (MATCH) fieldWeight(tituloOriginal:information in 2099), product of:1.0 = tf(termFreq(tituloOriginal:information)=1)6.009012 = idf(docFreq=36, numDocs=5541)0.5 = fieldNorm(field=tituloOriginal, doc=2099)
2.8274677 = (MATCH) weight(tituloOriginal:retrieval in 2099), product of:0.7728124 = queryWeight(tituloOriginal:retrieval), product of:
7.317345 = idf(docFreq=9, numDocs=5541)0.105613776 = queryNorm
3.6586726 = (MATCH) fieldWeight(tituloOriginal:retrieval in 2099), product of:1.0 = tf(termFreq(tituloOriginal:retrieval)=1)7.317345 = idf(docFreq=9, numDocs=5541)0.5 = fieldNorm(field=tituloOriginal, doc=2099)
![Page 69: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/69.jpg)
Lucene - Score
Score4.734231
Weight
Information
1.9067632
Weight
Retrieval
2.8274677
Query: tituloOriginal: Information RetrievalResultado: Information analysis and retrieval
![Page 70: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/70.jpg)
Lucene - Score
Weight
1.9067632
queryWeight
0.6346345
Idf
6.009012
queryNorm
0.105613776
fieldWeight
3.004506
Idf
6.009012
Tf
1.0
fieldNorm
0.5
Information
![Page 71: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/71.jpg)
Lucene - Score
Information Retrieval
Score Weight QueryWeight
Field Weight
Weight QueryWeight
Field Weight
R1 4.734231 1.9067632 0.6346345 3.004506 2.8274677 0.7728124 3.6586726
R2 3.550673 1.4300724 0.6346345 2.2533796 2.1206007 0.7728124 2.7440045
R3 1.4137338 2.8274677 0.7728124 3.6586726
Query: Information RetrievalR1: Information analysis and retrievalR2: Information storage and retrieval: tools, elements, theoriesR3: The SMART retrieval system
![Page 72: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/72.jpg)
Resultados
![Page 73: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/73.jpg)
Resultados
Query: assunto:banco de dados AND titulo:database*
Livros encontrados: 125 livros
Hibernate sem indexação:
media: 89 ms
Hibernate com indexação:
media: 13 ms
![Page 74: Integrando recuperação de informação em banco …Integrando recuperação de informação em banco de dados com Hibernate Search Alunos Gustavo Kendi Tsuji Leonardo Tadashi Kamaura](https://reader033.vdocuments.pub/reader033/viewer/2022042406/5f20ba2fde673a06c0011616/html5/thumbnails/74.jpg)
Resultados
Query: assunto:matematica*
Livros encontrados: 4763 livros
Hibernate sem indexação:
media: 730 ms
Hibernate com indexação:
media: 265 ms