Deskripsi : Penugasan untuk Pengambilan & Analisis Informasi CI6226 di NTU di Singapura.
Kelompok : 14
Anggota : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
Project Home : https://github.com/zhoushengsheng/CI6226-IRA-G14
Pengambilan informasi memainkan peran besar dalam kehidupan kita sehari -hari. Kami akan selalu ingin mencari informasi yang kami pedulikan atau ingin tahu menggunakan mesin pencari seperti Google, Baidu, Bing dan sebagainya. Dan selalu ada teman, film, atau produk baru yang kami gunakan seperti Twitter, YouTube, atau eBay merekomendasikan kepada kami. Layanan ini semuanya didasarkan pada pengambilan informasi. Dalam titik tertentu, manusia sulit untuk hidup tanpa pengambilan informasi di era informasi. Stack Overflow adalah situs web T&J yang memungkinkan pemrogram untuk mencari, bertanya, menjawab, dan membuat komentar tentang pertanyaan. Dan proyek kami bertujuan untuk menyediakan sistem mesin pencari agar pengguna dengan cepat mencari pertanyaan mereka berdasarkan bagian dari data overflow stack. Kami juga membangun dua aplikasi lain untuk menganalisis data. Salah satu aplikasi adalah mengambil popularitas setiap bahasa pemrograman dari 2008 hingga 2016. Aplikasi lainnya adalah memberi peringkat kepada pengguna berdasarkan jumlah jawaban mereka.






Proyek ini dibangun berdasarkan data posting Stack Overflow. Anda dapat mengunduh file data di https://archive.org/download/stackexchange/stackoverflow.com-posts.7z. Cukup besar, sekitar 10 GB. Setelah Anda mengunduh file data, hapus kompresnya untuk mendapatkan file posts.xml. Aplikasi proyek ini membangun indeks dan dokumen mereka di atas file data Posts.xml.
Buka Eclipse, pilih [impor -> Maven -> Proyek Maven yang ada] . Pilih direktori root sebagai CI6226-IRA-G14 dan pilih semua proyek di jendela. Klik Selesai untuk menyelesaikan impor.
Anda dapat mengubah konfigurasi aplikasi di file SRC/Main/Resources/Application.yml . Misalnya, Anda dapat mengubah jalur port, posts.xml dan jalur indeks. Silakan merujuk ke file .yml tertentu untuk detail lebih lanjut dari parameter konfigurasi.
Setiap proyek memiliki cara yang sama untuk dijalankan. Mari kita ambil mesin pencari misalnya: Klik kanan Main.java dalam paket CI6226.IRA.G14.SEARCH.Engine dan pilih [Run as -> Spring Boot App] . Kemudian mesin pencari akan berjalan dan mendengarkan di port 9001. Daftar berikut mencantumkan semua kelas utama dan port yang didengarkan default dari proyek:
| Aplikasi | Paket Main.java | Pelabuhan |
|---|---|---|
| Mesin pencari | ci6226.ira.g14.search.engine.main.java | 9001 |
| Tren bahasa | CI6226.IRA.G14.App.Language.trend.main.java | 9002 |
| Menjawab peringkat pengguna | ci6226.ira.g14.app.answering.user.ranking.main.java | 9003 |
| Frontend | ci6226.ira.g14.fe.main.java | 8000 |
Buka Intellij, di halaman selamat datang, pilih [Buat Proyek -> Proyek Kosong -> Berikutnya -> Navigasi Lokasi ke CI6226 -IRA -G14 -> Selesai] .
Kemudian, di jendela Struktur Proyek, tambahkan semua proyek sebagai modul dengan pilih ['+' Symbol -> Impor Modul -> Pilih G14 -Search -Engine (atau lainnya) -> Buka -> Modul Impor dari Modul Eksternal -> Maven -> Berikutnya ... -> Selesai] .
Sama seperti yang dijelaskan dalam Bagian 2.1. (2).
Klik kanan Main.java dan pilih Run 'Main'. Untuk paket dan port Main.java terperinci, silakan merujuk ke Bagian 2.1. (3).
Jika Anda tidak menginstal Maven di sistem Anda, silakan merujuk ke Panduan Instalasi Maven untuk menginstal Maven. Panduan instalasi berada di https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
Sama seperti yang dijelaskan dalam Bagian 2.1. (2).
Mari kita ambil mesin pencari misalnya:
Masukkan direktori root dari proyek mesin pencari:
$ cd /path/to/g14-search-engine
Jalankan aplikasi:
$ mvn spring-boot:run
Dan aplikasi mesin pencari akan berjalan dan mendengarkan di port 9001. Aplikasi lain berbagi prosedur yang sama untuk dijalankan di terminal.
Anda dapat menggunakan browser web untuk mengunjungi http: // localhost: 8000 untuk mengakses halaman web utama frontend. Kotak input pencarian tepat di tengah halaman web. Anda dapat memasukkan kata kunci pencarian dan memilih bidang mana yang ingin Anda cari. Kemudian klik tombol pencarian dan hasil pencarian akan diberikan. Jika Anda ingin pencarian lain, Anda dapat memasukkan kata kunci di kotak input kiri atas alih -alih kembali ke halaman utama.
URL adalah http: // localhost: 8000/bahasa . Pilih tahun mulai dan akhir tahun dan klik tombol Pencarian. Hasil tren bahasa akan diberikan dalam grafik.
URL adalah http: // localhost: 8000/pengguna . Masukkan pengguna nomor atas di kotak kiri atas dan klik tombol pencarian. Hasilnya akan diberikan dalam daftar di bawah ini.
Jika Anda ingin berinteraksi dengan mesin pencari tanpa halaman web, Anda bisa. Mesin pencari memperlihatkan API dari mana halaman web mengambil data sebenarnya.
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
}
]Kami menyediakan skrip shell untuk dengan mudah menggunakan aplikasi ke server jarak jauh. Perhatikan bahwa skrip ini hanya dapat digunakan dalam sistem seperti Unix seperti UNIX, Linux, Mac OS dan sebagainya. Mereka tidak dapat digunakan di Windows.
Untuk menggunakan skrip untuk penyebaran, Anda perlu mengonfigurasi server jarak jauh Anda untuk memungkinkan login melalui tombol SSH. Jika server Anda tidak dikonfigurasi dengan cara seperti itu, silakan merujuk ke tutorial ini untuk panduan tentang cara mengonfigurasi: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-authentication-on--linux-server.
Dan Anda juga perlu mengkonfigurasi firewall untuk memungkinkan port TCP yang digunakan dalam aplikasi.
Script berada di direktori root dari setiap proyek. Misalnya, dalam proyek mesin pencari, skripnya adalah:
Langkah selanjutnya adalah memodifikasi deploy.sh untuk mengatur pengguna dan server ke milik Anda:
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userDan memodifikasi server.sh untuk mengonfigurasi lingkungan Java:
export JAVA_HOME=/path/to/jdkAkhirnya, Anda dapat menjalankan Deploy.sh untuk secara otomatis membangun dan menggunakan proyek ke server jarak jauh:
$ ./deploy.sh