คำอธิบาย : การมอบหมายสำหรับ CI6226 การดึงข้อมูลและการวิเคราะห์ที่ NTU ในสิงคโปร์
กลุ่ม : 14
สมาชิก : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
หน้าแรกโครงการ : https://github.com/zhoushengsheng/ci6226-ira-g14
การดึงข้อมูลมีบทบาทอย่างมากในชีวิตประจำวันของเรา เรามักจะค้นหาข้อมูลที่เราใส่ใจหรือต้องการทราบการใช้เครื่องมือค้นหาเช่น Google, Baidu, Bing และอื่น ๆ และมีเพื่อนใหม่ภาพยนตร์หรือผลิตภัณฑ์ใหม่ที่เราใช้เช่น Twitter, YouTube หรือ eBay แนะนำให้เรา บริการเหล่านี้ทั้งหมดขึ้นอยู่กับการดึงข้อมูล ในบางจุดมนุษย์นั้นยากที่จะอยู่โดยไม่มีการดึงข้อมูลในยุคข้อมูล Stack Overflow เป็นเว็บไซต์ถาม - ตอบที่อนุญาตให้โปรแกรมเมอร์ค้นหาถามตอบและแสดงความคิดเห็นเกี่ยวกับคำถาม และโครงการของเรามีจุดมุ่งหมายเพื่อให้ระบบเครื่องมือค้นหาเพื่อให้ผู้ใช้ค้นหาคำถามของพวกเขาได้อย่างรวดเร็วตามส่วนหนึ่งของข้อมูลสแต็กล้น นอกจากนี้เรายังสร้างแอปพลิเคชั่นอีกสองแอปพลิเคชันเพื่อวิเคราะห์ข้อมูล แอปพลิเคชั่นหนึ่งคือการดึงความนิยมของแต่ละภาษาการเขียนโปรแกรมตั้งแต่ปี 2008 ถึง 2016 แอปพลิเคชันอื่น ๆ คือการจัดอันดับผู้ใช้ตามจำนวนคำตอบของพวกเขา






โครงการนี้สร้างขึ้นตามข้อมูลโพสต์สแต็กล้น คุณสามารถดาวน์โหลดไฟล์ข้อมูลได้ที่ https://archive.org/download/stackexchange/stackoverflow.com-posts.7z มันค่อนข้างใหญ่ประมาณ 10 GB เมื่อคุณดาวน์โหลดไฟล์ข้อมูลแล้วให้ไม่บีบอัดเพื่อรับไฟล์ posts.xml แอปพลิเคชันของโครงการนี้สร้างดัชนีและเอกสารของพวกเขาที่ด้านบนของไฟล์ข้อมูล posts.xml
Open Eclipse เลือก [นำเข้า -> Maven -> โครงการ Maven ที่มีอยู่] เลือกไดเรกทอรีรากเป็น CI6226-IRA-G14 และเลือกโครงการทั้งหมดในหน้าต่าง คลิกเสร็จสิ้นเพื่อนำเข้าเสร็จ
คุณสามารถเปลี่ยนการกำหนดค่าแอปพลิเคชันในไฟล์ SRC/Main/Resources/Application.yml ตัวอย่างเช่นคุณสามารถเปลี่ยนเส้นทางพอร์ต posts.xml และเส้นทางดัชนี โปรดดูไฟล์. yml เฉพาะสำหรับรายละเอียดเพิ่มเติมของพารามิเตอร์การกำหนดค่า
ทุกโครงการมีลักษณะเดียวกันที่จะดำเนินการ ลองใช้เครื่องมือค้นหา: คลิกขวาที่ main.java ในแพ็คเกจ CI6226.ira.g14.search.engine และเลือก [Run as -> Spring Boot App] จากนั้นเครื่องมือค้นหาจะทำงานและฟังในพอร์ต 9001 รายการต่อไปนี้แสดงรายการคลาสหลักทั้งหมดและพอร์ตที่ฟังเริ่มต้นของโครงการ:
| แอปพลิเคชัน | แพ็คเกจ Main.java | ท่าเรือ |
|---|---|---|
| เครื่องมือค้นหา | ci6226.ira.g14.search.engine.main.java | 9001 |
| แนวโน้มภาษา | ci6226.ira.g14.app.language.trend.main.java | 9002 |
| ตอบอันดับผู้ใช้ | ci6226.ira.g14.app.answering.user.ranking.main.java | 9003 |
| ส่วนหน้า | ci6226.ira.g14.fe.main.java | 8000 |
เปิด Intellij ในหน้าต้อนรับเลือก [สร้างโครงการ -> โครงการว่าง -> ถัดไป -> นำทางตำแหน่งไปยัง CI6226 -IRA -G14 -> เสร็จสิ้น]
จากนั้นในหน้าต่างโครงสร้างโครงการให้เพิ่มโครงการทั้งหมดเป็นโมดูลโดยเลือก สัญลักษณ์ ['+' -> การนำเข้าโมดูล -> เลือก G14 -Search -Engine (หรืออื่น ๆ ) -> Open -> การนำเข้าโมดูลจากโมดูลภายนอก -> Maven -> ถัดไป ... -> เสร็จสิ้น]
เช่นเดียวกับที่อธิบายไว้ในส่วนที่ 2.1 (2)
คลิกขวาที่ main.java และเลือกเรียกใช้ 'หลัก' สำหรับแพ็คเกจและพอร์ต Main.java โดยละเอียดโปรดดูหัวข้อ 2.1 (3)
หากคุณไม่ได้ติดตั้ง Maven ในระบบของคุณโปรดดูที่คู่มือการติดตั้ง Maven เพื่อติดตั้ง Maven คู่มือการติดตั้งอยู่ที่ https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
เช่นเดียวกับที่อธิบายไว้ในส่วนที่ 2.1 (2)
ลองใช้เครื่องมือค้นหา: ตัวอย่าง:
ป้อนไดเรกทอรีรูทของโครงการเสิร์ชเอ็นจิ้น:
$ cd /path/to/g14-search-engine
เรียกใช้แอปพลิเคชัน:
$ mvn spring-boot:run
และแอปพลิเคชันเครื่องมือค้นหาจะเรียกใช้และฟังในพอร์ต 9001 แอปพลิเคชันอื่น ๆ แบ่งปันขั้นตอนเดียวกันเพื่อทำงานในเทอร์มินัล
คุณสามารถใช้เว็บเบราว์เซอร์เพื่อเยี่ยมชม http: // localhost: 8000 เพื่อเข้าถึงหน้าเว็บหลักของส่วนหน้า กล่องอินพุตค้นหาอยู่ตรงกลางของหน้าเว็บ คุณสามารถป้อนคำค้นหาการค้นหาและเลือกฟิลด์ที่คุณต้องการค้นหา จากนั้นคลิกปุ่มค้นหาและผลการค้นหาจะถูกแสดงผล หากคุณต้องการค้นหาอื่นคุณสามารถป้อนคำหลักในกล่องอินพุตซ้ายบนแทนที่จะกลับไปที่หน้าหลัก
URL คือ http: // localhost: 8000/ภาษา เลือกปีเริ่มต้นและสิ้นปีและคลิกปุ่มค้นหา ผลลัพธ์แนวโน้มภาษาจะแสดงในกราฟ
URL คือ http: // localhost: 8000/ผู้ใช้ ป้อนผู้ใช้หมายเลขด้านบนในกล่องซ้ายบนและคลิกปุ่มค้นหา ผลลัพธ์จะแสดงผลในรายการด้านล่าง
หากคุณต้องการโต้ตอบกับเครื่องมือค้นหาโดยไม่มีหน้าเว็บคุณสามารถทำได้ เครื่องมือค้นหาจะเปิดเผย API ที่หน้าเว็บดึงข้อมูลจริง
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
}
]เราให้เชลล์สคริปต์เพื่อปรับใช้แอปพลิเคชันไปยังเซิร์ฟเวอร์ระยะไกลได้อย่างง่ายดาย โปรดทราบว่าสคริปต์เหล่านี้สามารถใช้ในระบบที่มีลักษณะเหมือน Unix เช่น Unix, Linux, Mac OS และอื่น ๆ ไม่สามารถใช้ใน Windows
ในการใช้สคริปต์สำหรับการปรับใช้คุณต้องกำหนดค่าเซิร์ฟเวอร์ระยะไกลของคุณเพื่ออนุญาตให้เข้าสู่ระบบผ่านคีย์ SSH หากเซิร์ฟเวอร์ของคุณไม่ได้รับการกำหนดค่าในลักษณะดังกล่าวโปรดดูบทช่วยสอนนี้สำหรับคำแนะนำเกี่ยวกับวิธีการกำหนดค่า: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-authentication-on-a-linux-server
และคุณต้องกำหนดค่าไฟร์วอลล์เพื่อให้พอร์ต TCP ที่ใช้ในแอปพลิเคชัน
สคริปต์อยู่ในไดเรกทอรีรากของทุกโครงการ ตัวอย่างเช่นในโครงการเสิร์ชเอ็นจิ้นสคริปต์คือ:
ขั้นตอนต่อไปคือการแก้ไข deploy.sh เพื่อตั้งค่าผู้ใช้และเซิร์ฟเวอร์เป็นของคุณ:
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userและแก้ไข Server.sh เพื่อกำหนดค่าสภาพแวดล้อม Java:
export JAVA_HOME=/path/to/jdkในที่สุดคุณสามารถเรียกใช้งาน deploy.sh เพื่อสร้างและปรับใช้โครงการไปยังเซิร์ฟเวอร์ระยะไกลโดยอัตโนมัติ:
$ ./deploy.sh