Description : Affectation pour la récupération et analyse des informations CI6226 à NTU à Singapour.
Groupe : 14
Membres : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
Accueil du projet : https://github.com/zhoushengsheng/ci6226-ira-g14
La récupération des informations joue un rôle énorme dans notre vie quotidienne. Nous aimerions toujours rechercher des informations dont nous nous soucions ou que nous voulons connaître à l'aide de moteurs de recherche comme Google, Baidu, Bing, etc. Et il y a toujours de nouveaux amis, films ou produits que les applications que nous utilisons comme Twitter, YouTube ou eBay nous recommande. Ces services sont tous basés sur la recherche d'informations. À un certain point, les êtres humains sont difficiles à vivre sans récupération d'informations à une époque d'information. Stack Overflow est un site Web de questions / réponses qui permet aux programmeurs de rechercher, de demander, de répondre et de faire des commentaires sur les questions. Et notre projet vise à fournir un système de moteurs de recherche pour permettre aux utilisateurs de rechercher rapidement leurs questions en fonction d'une partie des données de débordement de pile. Nous avons également construit deux autres applications pour analyser les données. Une application consiste à récupérer la popularité de chaque langage de programmation de 2008 à 2016. L'autre application consiste à classer les utilisateurs en fonction de leur nombre de réponses.






Ce projet est construit sur la base des données de poteaux de débordement de pile. Vous pouvez télécharger le fichier de données sur https://archive.org/download/stackexchange/stackoverflow.com-post.7z. Il est assez grand, environ 10 Go. Une fois que vous avez téléchargé le fichier de données, débutez-le pour obtenir le fichier POSTS.xml. Les applications de ce projet créent leurs indices et documents en plus du fichier de données POSTS.XML.
Ouvrez Eclipse, choisissez [Import -> Maven -> Projets Maven existants] . Sélectionnez le répertoire racine comme CI6226-IRA-G14 et sélectionnez tous les projets dans la fenêtre. Cliquez sur Terminer pour terminer l'importation.
Vous pouvez modifier la configuration de l'application dans le fichier SRC / Main / Resources / Application.yml . Par exemple, vous pouvez modifier le port, les postes.xml chemin et le chemin d'index. Veuillez vous référer au fichier .yml spécifique pour plus de détails sur les paramètres de configuration.
Chaque projet a la même manière à exécuter. Prenons l'exemple du moteur de recherche: cliquez avec le bouton droit sur le main.java dans le package CI6226.IRA.G14.Search.Engine et sélectionnez [Exécuter en tant que -> Spring Boot App] . Ensuite, le moteur de recherche s'exécutera et écoutera sur le port 9001. La liste suivante répertorie toutes les classes principales et les ports écoutés par défaut des projets:
| Application | Package main.java | Port |
|---|---|---|
| Moteur de recherche | ci6226.ira.g14.search.engine.main.java | 9001 |
| Tendance | ci6226.ira.g14.app.language.trend.main.java | 9002 |
| Répondre au classement des utilisateurs | ci6226.ira.g14.app.answering.user.ranking.main.java | 9003 |
| L'extrémité avant | ci6226.ira.g14.fe.main.java | 8000 |
Ouvrez Intellij, dans la page de bienvenue, sélectionnez [Créer un projet -> Projet vide -> Suivant -> Naviguez l'emplacement vers CI6226-IRA-G14 -> Finition] .
Ensuite, dans la fenêtre Structure du projet, ajoutez tous les projets en tant que module par SELECT ['+' Symbole -> Importer Module -> Choisissez G14-Search-Engine (ou autres) -> Open -> Importer Module à partir du module externe -> Maven -> Suivant ... -> Finition] .
Identique à celle décrite dans la section 2.1. (2).
Cliquez avec le bouton droit sur le main.java et sélectionnez Exécuter «Main». Pour les packages et ports Détaillés Main.java, veuillez vous référer à la section 2.1. (3).
Si vous n'avez pas installé Maven dans votre système, veuillez vous référer au guide d'installation Maven pour installer le Maven. Le guide d'installation se trouve sur https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
Identique à celle décrite dans la section 2.1. (2).
Prenons l'exemple du moteur de recherche:
Entrez le répertoire racine du projet de moteur de recherche:
$ cd /path/to/g14-search-engine
Exécutez l'application:
$ mvn spring-boot:run
Et l'application du moteur de recherche s'exécutera et écoutera sur le port 9001. D'autres applications partagent la même procédure à exécuter dans un terminal.
Vous pouvez utiliser le navigateur Web pour visiter http: // localhost: 8000 pour accéder à la page Web principale du frontend. La zone de saisie de recherche est en plein centre de la page Web. Vous pouvez saisir des mots clés de recherche et sélectionner le champ que vous souhaitez rechercher. Cliquez ensuite sur le bouton de recherche et les résultats de la recherche seront rendus. Si vous souhaitez une autre recherche, vous pouvez simplement saisir des mots clés dans la zone d'entrée supérieure gauche à la place de la page principale.
L'URL est http: // localhost: 8000 / langues . Sélectionnez l'année de début et l'année de fin et cliquez sur le bouton de recherche. Les résultats de la tendance linguistique seront rendus dans un graphique.
L'URL est http: // localhost: 8000 / utilisateurs . Entrez un numéro supérieur des utilisateurs dans la case supérieure gauche et cliquez sur le bouton Rechercher. Les résultats seront rendus dans la liste ci-dessous.
Si vous souhaitez interagir avec le moteur de recherche sans la page Web, vous le pouvez. Le moteur de recherche expose une API à partir de laquelle la page Web récupère en fait les données.
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
}
]Nous avons fourni des scripts shell pour déployer facilement les applications sur un serveur distant. Notez que ces scripts ne peuvent être utilisés que dans un système de type Unix comme Unix, Linux, Mac OS, etc. Ils ne peuvent pas être utilisés dans Windows.
Afin d'utiliser le script pour le déploiement, vous devez configurer votre serveur distant pour permettre la connexion via la touche SSH. Si votre serveur n'est pas configuré de cette manière, veuillez vous référer à ce didacticiel pour le guide sur la configuration: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-ased-authentication-on-a-a-linux-server.
Et vous devez également configurer le pare-feu pour permettre le port TCP utilisé dans les applications.
Les scripts sont dans le répertoire racine de chaque projet. Par exemple, dans le projet de moteur de recherche, les scripts sont:
La prochaine étape consiste à modifier le deploy.sh pour définir l'utilisateur et le serveur sur le vôtre:
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userEt modifier le serveur.sh pour configurer l'environnement Java:
export JAVA_HOME=/path/to/jdkEnfin, vous pouvez exécuter le deploy.sh pour créer et déployer automatiquement le projet sur le serveur distant:
$ ./deploy.sh