Descripción : Asignación para CI6226 Recuperación de información y análisis en NTU en Singapur.
Grupo : 14
Miembros : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
Project Home : https://github.com/zhoushengsheng/ci6226-ira-g14
La recuperación de la información juega un papel muy importante en nuestra vida cotidiana. Siempre nos gustaría buscar información que nos importe o queremos saber usando motores de búsqueda como Google, Baidu, Bing, etc. Y siempre hay nuevos amigos, películas o productos que las aplicaciones que utilizamos, como Twitter, YouTube o eBay, nos recomiendan. Todos estos servicios se basan en la recuperación de la información. En cierto punto, los seres humanos son difíciles de vivir sin recuperación de información en una era de información. Stack Overflow es un sitio web de preguntas y respuestas que permite a los programadores buscar, preguntar, responder y hacer comentarios sobre las preguntas. Y nuestro proyecto tiene como objetivo proporcionar un sistema de motor de búsqueda para permitir que el usuario busque rápidamente sus preguntas basadas en parte de los datos de Overflow de Stack. También creamos otras dos aplicaciones para análisis de los datos. Una aplicación es recuperar la popularidad de cada lenguaje de programación de 2008 a 2016. La otra aplicación es clasificar a los usuarios en función de sus recuentos de respuesta.






Este proyecto está creado en base a los datos de publicaciones de Overflow de Stack. Puede descargar el archivo de datos en https://archive.org/download/stackexchange/stackoverflow.com-posts.7z. Es bastante grande, aproximadamente 10 GB. Una vez que haya descargado el archivo de datos, lo descomprima para obtener el archivo posts.xml. Las aplicaciones de este proyecto crean sus índices y documentos sobre el archivo de datos posts.xml.
Abra eclipse, elija [importar -> maven -> proyectos maven existentes] . Seleccione el directorio raíz como CI6226-IRA-G14 y seleccione todos los proyectos en la ventana. Haga clic en Finalizar para finalizar la importación.
Puede cambiar la configuración de la aplicación en el archivo SRC/Main/Resources/Application.yml . Por ejemplo, puede cambiar la ruta de puerto, posts.xml y la ruta de índice. Consulte el archivo .yml específico para obtener más detalles de los parámetros de configuración.
Cada proyecto tiene la misma manera que ejecutar. Tomemos el motor de búsqueda, por ejemplo: haga clic con el botón derecho en Main.java en el paquete CI6226.IRA.G14.Search.Engine y seleccione [Ejecutar AS -> Aplicación Boot Spring] . Luego, el motor de búsqueda funcionará y escuchará en el puerto 9001. La siguiente lista enumera todas las clases principales y los puertos escuchados predeterminados de los proyectos:
| Solicitud | Paquete de Java Main. | Puerto |
|---|---|---|
| Motor de búsqueda | CI6226.ira.g14.search.engine.main.java | 9001 |
| Tendencia del idioma | CI6226.ira.g14.app.language.trend.main.java | 9002 |
| Respondiendo al ranking de usuarios | CI6226.IRA.G14.App.ANSWERING.USER.RANKING.MAIN.JAVA | 9003 |
| Interfaz | CI6226.IRA.G14.fe.main.java | 8000 |
Abra IntelliJ, en la página de bienvenida, seleccione [Crear proyecto -> Proyecto vacío -> Next -> Navegue Ubicación a CI6226 -IRA -G14 -> Finalizar] .
Luego, en la ventana de estructura del proyecto, agregue todos los proyectos como módulo seleccionando ['+' símbolo -> Módulo de importación -> Elija G14 -Search -Engine (u otros) -> Open -> Módulo de importación del módulo externo -> Maven -> Next ... -> Finalizar] .
Lo mismo que se describe en la Sección 2.1. (2).
Haga clic con el botón derecho en Main.java y seleccione Ejecutar 'Main'. Para paquetes y puertos de Java detallados, consulte la Sección 2.1. (3).
Si no tiene Maven instalado en su sistema, consulte la Guía de instalación de Maven para instalar el Maven. La guía de instalación se encuentra en https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
Lo mismo que se describe en la Sección 2.1. (2).
Tomemos el motor de búsqueda, por ejemplo:
Ingrese el directorio raíz del proyecto del motor de búsqueda:
$ cd /path/to/g14-search-engine
Ejecute la aplicación:
$ mvn spring-boot:run
Y la aplicación del motor de búsqueda se ejecutará y escuchará en el puerto 9001. Otras aplicaciones comparten el mismo procedimiento para ejecutarse en un terminal.
Puede usar el navegador web para visitar http: // localhost: 8000 para acceder a la página web principal del frontend. El cuadro de entrada de búsqueda está justo en el centro de la página web. Puede ingresar palabras clave de búsqueda y seleccionar qué campo desea buscar. Luego haga clic en el botón de búsqueda y los resultados de búsqueda se presentarán. Si desea otra búsqueda, simplemente puede ingresar palabras clave en el cuadro de entrada superior izquierdo en lugar de volver a la página principal.
La URL es http: // localhost: 8000/idiomas . Seleccione el año de inicio y el año final y haga clic en el botón de búsqueda. Los resultados de la tendencia del idioma se representarán en un gráfico.
La URL es http: // localhost: 8000/usuarios . Ingrese los usuarios de un número superior en el cuadro superior izquierdo y haga clic en el botón Búsqueda. Los resultados se presentarán en la lista a continuación.
Si desea interactuar con el motor de búsqueda sin la página web, puede. El motor de búsqueda expone una API de la cual la página web obtiene datos realmente.
GET http://localhost:9000/api/search?field=all&keywords=python+convert+string+to+int&count=2
field: title, body or all
keywords: query keywords (url encoded)
count: top N results
[
{
"title" : " converting string to int python " ,
"body" : " <p>how can I convert a string to an int in python n say I have this array</p> nn <pre><code>['(111,11,12)','(12,34,56)'] to [(111,11,12),(12,34,56)] n </code></pre> nn <p>Any help will be appreciated thanks</p> n " ,
"docId" : 582335 ,
"score" : 30.801956
},
{
"title" : " Python: Recursively convert int to binary string " ,
"body" : " <p>I am trying to recursively convert int to binary string but I don't really understand how the whole positive int to binary string conversion works.</p> nn <p>Also found out that apparently each position is like a representation of the power of 2.</p> nn <p>Any explanation as to how to convert a positive int to a string representation as shown in the Googled example above is extremely helpful.</p> n " ,
"docId" : 608825 ,
"score" : 28.072052
}
] GET http://localhost:9001/api/language_trend?rankLanguages=java%2Cc%2Cpython%2Cphp&startYear=2015&endYear=2016
rankLanguages: programming languages that you want to get trend (url encoded)
startYear: star year
endYear: end year
{
"2015" : [
{
"name" : " java " ,
"popularity" : 50467
},
{
"name" : " c " ,
"popularity" : 35010
},
{
"name" : " python " ,
"popularity" : 59565
},
{
"name" : " php " ,
"popularity" : 58975
}
],
"2016" : [
{
"name" : " java " ,
"popularity" : 49137
},
{
"name" : " c " ,
"popularity" : 34022
},
{
"name" : " python " ,
"popularity" : 70951
},
{
"name" : " php " ,
"popularity" : 59549
}
]
} GET http://localhost:9002/api/user_ranking?userCount=3
userCount: top N users
[
{
"userID" : " 22656 " ,
"username" : " Jon Skeet " ,
"anwseredCount" : 33477
},
{
"userID" : " 1144035 " ,
"username" : null ,
"anwseredCount" : 31656
},
{
"userID" : " 29407 " ,
"username" : " Darin " ,
"anwseredCount" : 21217
}
]Proporcionamos scripts de shell para implementar fácilmente las aplicaciones al servidor remoto. Tenga en cuenta que estos scripts solo se pueden usar en un sistema similar a UNIX como Unix, Linux, Mac OS, etc. No se pueden usar en Windows.
Para usar el script para la implementación, debe configurar su servidor remoto para permitir el inicio de sesión a través de la tecla SSH. Si su servidor no está configurado de esa manera, consulte este tutorial para obtener una guía sobre cómo configurar: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key basado- autenticación-on-a-linux-server.
Y también debe configurar el firewall para permitir el puerto TCP utilizado en las aplicaciones.
Los scripts están en el directorio raíz de cada proyecto. Por ejemplo, en el proyecto del motor de búsqueda, los scripts son:
El siguiente paso es modificar el implement.sh para establecer el usuario y el servidor en los suyos:
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userY modifique el servidor.sh para configurar el entorno Java:
export JAVA_HOME=/path/to/jdkFinalmente, puede ejecutar implement.sh para construir e implementar automáticamente el proyecto en el servidor remoto:
$ ./deploy.sh