Add summary
This commit is contained in:
parent
f1519b55c2
commit
932e265e3f
|
@ -0,0 +1,112 @@
|
|||
#+TITLE: Práctica final
|
||||
#+SUBTITLE: Recuperación de Información
|
||||
#+AUTHOR: Amin Kasrou Aouam
|
||||
#+DATE: 2021-01-11
|
||||
#+PANDOC_OPTIONS: template:~/.pandoc/templates/eisvogel.latex
|
||||
#+PANDOC_OPTIONS: listings:t
|
||||
#+PANDOC_OPTIONS: toc:t
|
||||
#+PANDOC_METADATA: lang=es
|
||||
#+PANDOC_METADATA: titlepage:t
|
||||
#+PANDOC_METADATA: listings-no-page-break:t
|
||||
#+PANDOC_METADATA: toc-own-page:t
|
||||
#+PANDOC_METADATA: table-use-row-colors:t
|
||||
#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGR.png
|
||||
* Práctica final
|
||||
|
||||
En esta práctica, vamos a implementar un buscar de información en una serie de documentos /JSON/ usando /Apache Lucene/.
|
||||
|
||||
** /Parsing/
|
||||
|
||||
Parseamos los documentos /JSON/ mediante la librería /GSON/, dado que ésta nos ofrece la posibilidad de serializar el documento en una clase Java.
|
||||
|
||||
Esta funcionalidad nos facilita la extracción de información en /JSON/ complejos. Para ellos, creamos la clase *Paper*:
|
||||
|
||||
#+begin_src java
|
||||
package org.RI.P2;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
class Affiliation {
|
||||
String laboratory;
|
||||
String institution;
|
||||
}
|
||||
|
||||
class Author {
|
||||
String first;
|
||||
List<String> middle;
|
||||
String last;
|
||||
String suffix;
|
||||
Affiliation affiliation;
|
||||
String email;
|
||||
}
|
||||
|
||||
class Metadata {
|
||||
String title;
|
||||
List<Author> authors;
|
||||
}
|
||||
|
||||
class Abstract {
|
||||
String text;
|
||||
}
|
||||
|
||||
public class Paper {
|
||||
String paper_id;
|
||||
Metadata metadata;
|
||||
@SerializedName("abstract") List<Abstract> abstr;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
Es esencial utilizar el mismo nombre de atributo en nuestra clase, dado que esto permitirá un /mapping/ correcto. En caso de que no fuera posible, podemos hacer uso del decorador *@SerializedName*.
|
||||
|
||||
El único paso que nos falta es indicarle a la librería la entrada (/JSON/) y la clase.
|
||||
|
||||
#+begin_src java
|
||||
Gson gson = new Gson();
|
||||
Paper data = gson.fromJson(readerJson, Paper.class);
|
||||
#+end_src
|
||||
|
||||
** Indexación
|
||||
|
||||
Para la indexación, hemos elegido los siguientes atributos:
|
||||
|
||||
- =paper_id=
|
||||
- title
|
||||
- authors
|
||||
- institution
|
||||
- emails
|
||||
- abstract
|
||||
|
||||
Optamos por crear un índice en cada ejecución, para evitar obtener valores repetidos.
|
||||
|
||||
** Buscador
|
||||
|
||||
Implementamos un buscador con interfaz gráfica (GUI), basada en el proyecto de ejemplo disponible en la plataforma Prado.
|
||||
|
||||
Podemos optar por buscar en diferentes campos, mediante un argumento pasado por línea de comandos. Especificamos las distintas opciones en la sección siguiente.
|
||||
|
||||
** Ejecución
|
||||
|
||||
En el caso que deseemos utilizar /Maven/, debemos ejecutar los siguientes comandos:
|
||||
|
||||
1. Compilar el proyecto
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
mvn compile
|
||||
#+END_SRC
|
||||
|
||||
2. Ejecutar el proyecto
|
||||
|
||||
#+BEGIN_SRC shell
|
||||
mvn exec:java -Dexec.mainClass="org.RI.P2.Searcher" -Dexec.args="data title"
|
||||
#+END_SRC
|
||||
|
||||
Debemos modificar el argumento *title* según la salida que deseemos:
|
||||
|
||||
- *title*
|
||||
- *authors*
|
||||
- *abstract*
|
||||
- *institutions*
|
||||
- *emails*
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue