الوصف : تعيين 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 جيجابايت. بمجرد تنزيل ملف البيانات ، قم بإلغاء ضغطه للحصول على ملف posts.xml. تقوم تطبيقات هذا المشروع بإنشاء مؤشراتها ومستنداتها أعلى ملف بيانات posts.xml.
Open Eclipse ، اختر [استيراد -> Maven -> مشاريع Maven الحالية] . حدد دليل الجذر كـ CI6226-IRA-G14 وحدد جميع المشاريع في النافذة. انقر فوق إنهاء لإنهاء الاستيراد.
يمكنك تغيير تكوين التطبيق في ملف SRC/Main/Resources/Application.yml . على سبيل المثال ، يمكنك تغيير PORT و POSTS.XML ومسار الفهرس. يرجى الرجوع إلى ملف .IML محدد لمزيد من التفاصيل لمعلمات التكوين.
كل مشروع لديه نفس الطريقة للتشغيل. لنأخذ محرك البحث على سبيل المثال: انقر بزر الماوس الأيمن على Main.java في الحزمة CI6226.IRA.G14 ثم سيتم تشغيل محرك البحث والاستماع إلى منفذ 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 |
Open Intellij ، في صفحة الترحيب ، حدد [إنشاء مشروع -> مشروع فارغ -> التالي -> انتقل الموقع إلى CI6226 -IRA -G14 -> FINGLE] .
بعد ذلك ، في نافذة بنية المشروع ، أضف جميع المشاريع كوحدة SELECT ['+' symbol -> import module -> اختر g14 -search -engine (أو others) -> 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/مستخدم . إدخال رقم أعلى من المستخدمين في المربع الأيسر العلوي وانقر فوق زر البحث. سيتم تقديم النتائج في القائمة أدناه.
إذا كنت ترغب في التفاعل مع محرك البحث بدون صفحة الويب ، فيمكنك ذلك. يكشف محرك البحث عن واجهة برمجة التطبيقات التي تجلب منها صفحة الويب بياناتها بالفعل.
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
}
]قدمنا نصوص Shell لنشر التطبيقات بسهولة على الخادم البعيد. لاحظ أنه لا يمكن استخدام هذه البرامج النصية إلا في نظام يشبه UNIX مثل UNIX و Linux و Mac OS وما إلى ذلك. لا يمكن استخدامها في النوافذ.
من أجل استخدام البرنامج النصي للنشر ، تحتاج إلى تكوين الخادم البعيد الخاص بك للسماح بتسجيل الدخول عبر مفتاح 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