Beschreibung : Zuweisung für CI6226 Information Abruf & Analysis bei NTU in Singapur.
Gruppe : 14
Mitglieder : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
Projekthaus : https://github.com/zhoushengseng/ci6226-ira-g14
Informationsabruf spielt eine große Rolle in unserem täglichen Leben. Wir möchten immer nach Informationen suchen, die uns wichtig sind oder die wir mit Suchmaschinen wie Google, Baidu, Bing usw. wissen möchten. Und es gibt immer neue Freunde, Filme oder Produkte, die wir wie Twitter, YouTube oder eBay verwenden, empfehlen uns. Diese Dienste basieren alle auf dem Abrufen von Informationen. In einem bestimmten Zeitpunkt sind Menschen in einer Informationszeit schwer zu leben, ohne Informationen zu erhalten. Stack Overflow ist eine Q & A -Website, mit der Programmierer die Fragen suchen, fragen, beantworten und Kommentare abgeben können. Unser Projekt zielt darauf ab, ein Suchmaschinensystem bereitzustellen, damit der Benutzer schnell nach ihren Fragen basierend auf einem Teil der Stapelüberlaufdaten suchen kann. Wir haben auch zwei weitere Anwendungen für die Analyse der Daten erstellt. Eine Anwendung besteht darin, die Beliebtheit jeder Programmiersprache von 2008 bis 2016 abzurufen. Die andere Anwendung besteht darin, Benutzer anhand ihrer Antwortzahlen zu bewerten.






Dieses Projekt basiert auf den Daten der Stack Overflow -Posts. Sie können die Datendatei unter https://archive.org/download/stackexchange/stackoverflow.com-posts.7z herunterladen. Es ist ziemlich groß, ungefähr 10 GB. Sobald Sie die Datendatei heruntergeladen haben, können Sie sie entfernen, um die Datei posts.xml abzurufen. Die Anwendungen dieses Projekts erstellen ihre Indizes und Dokumente neben der Datei der Posts.xml.
Öffnen Sie die Sonnenfinsternis, wählen Sie [Import -> Maven -> Bestehende Maven -Projekte] . Wählen Sie das Stammverzeichnis als CI6226-IRA-G14 aus und wählen Sie alle Projekte im Fenster aus. Klicken Sie auf Fertig stellen, um den Import zu beenden.
Sie können die Anwendungskonfiguration in der Datei src/main/ressourcen/application.yml ändern. Beispielsweise können Sie den Port, posts.xml Pfad und den Indexpfad ändern. Weitere Informationen zu den Konfigurationsparametern finden Sie in einer spezifischen .YML -Datei.
Jedes Projekt hat die gleiche Art und Weise zu betreiben. Nehmen wir zum Beispiel die Suchmaschine: Klicken Sie mit der rechten Maustaste auf die main.java in Paket ci6226.ira.g14.search.egine und wählen Sie [Ausführen als -> Spring -Boot -App] . Anschließend wird die Suchmaschine ausgeführt und an den 9001 -Port anhören. In der folgenden Liste werden alle Hauptklassen und Standard -Anhörten der Projekte aufgeführt:
| Anwendung | Main.java paket | Hafen |
|---|---|---|
| Suchmaschine | ci6226.ira.g14.search.engine.main.java | 9001 |
| Sprachtrend | ci6226.ira.g14.app.uanguage.trend.main.java | 9002 |
| Beantwortung des Benutzerrangs | ci6226.ira.g14.app.answering.user.ranking.main.java | 9003 |
| Frontend | ci6226.ira.g14.fe.main.java | 8000 |
Öffnen Sie Intellij auf der Begrüßungsseite, wählen Sie [Projekt erstellen -> leeres Projekt -> Weiter -> Standort zu CI6226 -IRA -G14 -> Finish] .
Fügen Sie dann im Fenster Projektstruktur alle Projekte als Modul nach Select ['+' Symbol -> Modul importieren -> G14 -Search -Engine (oder andere) -> Öffnen -> Modul aus dem externen Modul -> Maven -> Weiter ... -> Finish] .
Wie in Abschnitt 2.1 (2) beschrieben.
Klicken Sie mit der rechten Maustaste auf main.java und wählen Sie 'Main' aus. Ausführlich main.java -Pakete und -Anten finden Sie in Abschnitt 2.1 (3).
Wenn Sie Maven in Ihrem System nicht installieren lassen, finden Sie in der Maven -Installationshandbuch, um die Installation des Maven zu erhalten. Der Installationshandbuch finden Sie unter https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
Wie in Abschnitt 2.1 (2) beschrieben.
Nehmen wir zum Beispiel Suchmaschine:
Geben Sie das Stammverzeichnis des Suchmaschinenprojekts ein:
$ cd /path/to/g14-search-engine
Führen Sie die Anwendung aus:
$ mvn spring-boot:run
Und die Suchmaschinenanwendung wird aus ausgeführt und am 9001 -Port anhören. Andere Anwendungen teilen das gleiche Verfahren, das in einem Terminal ausgeführt werden soll.
Sie können Webbrowser verwenden, um http: // localhost: 8000 zu besuchen, um auf die Hauptwebseite der Frontend zuzugreifen. Das Sucheingangsfeld befindet sich direkt in der Mitte der Webseite. Sie können Suchschlüsselwörter eingeben und auswählen, welches Feld Sie suchen möchten. Klicken Sie dann auf die Schaltfläche Such und die Suchergebnisse werden gerendert. Wenn Sie eine andere Suche möchten, können Sie einfach Keywords im oberen linken Eingabefeld eingeben, stattdessen zurück auf die Hauptseite.
Die URL ist http: // localhost: 8000/langer . Wählen Sie Startjahr und Jahresjahr und klicken Sie auf die Schaltfläche Such. Die Sprachtrendergebnisse werden in einem Diagramm wiedergegeben.
Die URL ist http: // localhost: 8000/user . Geben Sie eine Top -Nummer -Benutzer im oberen linken Feld ein und klicken Sie auf Suchschaltfläche. Die Ergebnisse werden in der folgenden Liste wiedergegeben.
Wenn Sie ohne die Webseite mit der Suchmaschine interagieren möchten, können Sie dies. Die Suchmaschine enthüllt eine API, aus der die Webseite tatsächlich Daten holt.
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
}
]Wir haben Shell -Skripte bereitgestellt, um die Anwendungen einfach auf Remote -Server bereitzustellen. Beachten Sie, dass diese Skripte nur in einem Unix-ähnlichen System wie Unix, Linux, Mac OS und so weiter verwendet werden können. Sie können nicht in Windows verwendet werden.
Um das Skript für die Bereitstellung zu verwenden, müssen Sie Ihren Remote -Server so konfigurieren, dass sich die Anmeldung über SSH -Taste ermöglicht. Wenn Ihr Server nicht auf eine solche Weise konfiguriert ist, finden Sie in diesem Tutorial, wie Sie sich befinden:
Außerdem müssen Sie die Firewall konfigurieren, damit der in den Anwendungen verwendete TCP -Port verwendet wird.
Die Skripte befinden sich im Stammverzeichnis jedes Projekts. Zum Beispiel sind im Suchmaschinenprojekt die Skripte:
Der nächste Schritt besteht darin, die Bereitstellung zu ändern.
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userUnd ändern Sie den server.sh , um die Java -Umgebung zu konfigurieren:
export JAVA_HOME=/path/to/jdkSchließlich können Sie die Bereitstellung ausführen, um das Projekt automatisch zu erstellen und auf dem Remote -Server bereitzustellen:
$ ./deploy.sh