説明:シンガポールのNTUでのCI6226情報検索および分析の割り当て。
グループ:14
メンバー:Ke Xiangyu、Li Jinjin、Li Xihan、Zhou Shengsheng
プロジェクトホーム:https://github.com/zhoushengsheng/ci6226-ira-g14
情報検索は、私たちの毎日の生活において大きな役割を果たします。私たちは常に、Google、Baidu、Bingなどの検索エンジンを使用して気にしたり、知りたい情報を検索したいと考えています。また、Twitter、YouTube、eBayが推奨するように使用するアプリケーションが常に新しい友達、映画、または製品が常にあります。これらのサービスはすべて、情報検索に基づいています。特定の時点では、人間は情報の時代に情報を取得せずに生きるのが難しいです。 Stack Overflowは、プログラマーが質問について検索、尋ね、答え、コメントすることができるQ&A Webサイトです。また、私たちのプロジェクトは、スタックオーバーフローデータの一部に基づいてユーザーが質問をすばやく検索できるようにするための検索エンジンシステムを提供することを目的としています。また、データを分析するために別の2つのアプリケーションを構築しました。 1つのアプリケーションは、2008年から2016年までの各プログラミング言語の人気を取得することです。もう1つのアプリケーションは、回答数に基づいてユーザーをランク付けすることです。






このプロジェクトは、スタックオーバーフロー投稿データに基づいて構築されています。 https://archive.org/download/stackexchange/stackoverflow.com-posts.7zでデータファイルをダウンロードできます。それは非常に大きく、約10 GBです。データファイルをダウンロードしたら、それを非圧縮してposts.xmlファイルを取得します。このプロジェクトのアプリケーションは、posts.xmlデータファイルの上にインデックスとドキュメントを構築します。
Eclipseを開き、 [インポート - > maven->既存のMavenプロジェクト]を選択します。ルートディレクトリをCI6226-IRA-G14として選択し、ウィンドウ内のすべてのプロジェクトを選択します。 [完了]をクリックしてインポートを完了します。
SRC/Main/Resources/Application.ymlファイルのアプリケーション構成を変更できます。たとえば、ポート、posts.xmlパス、インデックスパスを変更できます。構成パラメーターの詳細については、特定の.ymlファイルを参照してください。
すべてのプロジェクトには同じ方法があります。たとえば、検索エンジンを使用してみましょう。パッケージCI6226.ira.g14.search.engineのmain.javaを右クリックし、 [as-> spring bootアプリを実行]を選択します。その後、検索エンジンが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を開くウェルカムページで、 [プロジェクト - >空のプロジェクト - > next->場所をci6226 -ira -g14-> finishに移動する[作成]を選択します。
次に、[プロジェクト構造]ウィンドウで、 ['+'シンボル - >インポートモジュール - > G14 -Search -Engine(またはその他)を選択して、すべてのプロジェクトをモジュールとして追加します - > Open->外部モジュール - > maven-> next ...-> finish]からモジュールをインポートします。
セクション2.1。(2)で説明されているのと同じ。
main.javaを右クリックして、[メイン]を実行します。詳細なmain.javaパッケージとポートについては、セクション2.1(3)を参照してください。
Mavenがシステムにインストールされていない場合は、Mavenインストールガイドを参照して、Mavenをインストールしてください。インストールガイドはhttps://maven.apache.org/guides/getting-started/maven-in-minutes.htmlにあります。
セクション2.1。(2)で説明されているのと同じ。
たとえば、検索エンジンを取りましょう。
検索エンジンプロジェクトのルートディレクトリを入力してください。
$ cd /path/to/g14-search-engine
アプリケーションを実行します:
$ mvn spring-boot:run
また、検索エンジンアプリケーションは9001ポートで実行およびリッスンします。他のアプリケーションは、ターミナルで実行するのと同じ手順を共有します。
Webブラウザーを使用して、 http:// localhost:8000にアクセスして、フロントエンドのメインWebページにアクセスできます。検索入力ボックスは、Webページの中央にあります。検索キーワードを入力して、検索するフィールドを選択できます。次に、[検索]ボタンをクリックすると、検索結果が表示されます。別の検索を行う場合は、メインページに戻る代わりに、左上の入力ボックスにキーワードを入力するだけです。
URLはhttp:// localhost:8000/言語です。開始年と終了を選択し、[検索]ボタンをクリックします。言語トレンドの結果はグラフでレンダリングされます。
URLはhttp:// localhost:8000/usersです。左上のボックスにトップナンバーユーザーを入力し、[検索]ボタンをクリックします。結果は以下のリストに記載されます。
Webページなしで検索エンジンと対話したい場合は、できます。検索エンジンは、Webページが実際にデータを取得する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、Linux、Mac OSなどのUnixのようなシステムでのみ使用できることに注意してください。 Windowsで使用することはできません。
展開にスクリプトを使用するには、SSHキーを介してログインできるようにリモートサーバーを構成する必要があります。サーバーがそのような方法で構成されていない場合は、構成方法に関するガイドについては、このチュートリアルを参照してください:https://www.digitalocean.com/community/tutorials/how-to-configure-shy-key-authentication-on-a-linux-server。
また、アプリケーションで使用されるTCPポートを許可するようにファイアウォールを構成する必要があります。
スクリプトは、すべてのプロジェクトのルートディレクトリにあります。たとえば、検索エンジンプロジェクトでは、スクリプトは次のとおりです。
次のステップは、 deploy.shを変更してユーザーとサーバーを自分のものに設定することです。
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userserver.shを変更してJava環境を構成します。
export JAVA_HOME=/path/to/jdk最後に、deploy.shを実行して、プロジェクトをリモートサーバーに自動的に構築および展開できます。
$ ./deploy.sh