설명 : 싱가포르 NTU의 CI6226 정보 검색 및 분석에 대한 과제.
그룹 : 14
회원 : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
프로젝트 홈 : https://github.com/zhoushengsheng/ci6226-ira-g14
정보 검색은 우리의 일상 생활에서 큰 역할을합니다. 우리는 항상 Google, Baidu, Bing 등과 같은 검색 엔진을 사용하여 알고 있거나 알고 싶어하는 정보를 검색하고 싶습니다. 그리고 Twitter, YouTube 또는 eBay와 같은 응용 프로그램이 우리에게 추천하는 새로운 친구, 영화 또는 제품이 항상 있습니다. 이러한 서비스는 모두 정보 검색을 기반으로합니다. 어느 시점에서 인간은 정보 시대에 정보 검색없이 살기가 어렵습니다. 스택 오버 플로우는 프로그래머가 질문에 대해 검색, 질문, 답변 및 의견을 작성할 수있는 Q & A 웹 사이트입니다. 또한 우리의 프로젝트는 사용자가 스택 오버플로 데이터의 일부를 기반으로 질문을 신속하게 검색 할 수있는 검색 엔진 시스템을 제공하는 것을 목표로합니다. 또한 데이터를 분석하기 위해 또 다른 두 응용 프로그램을 구축했습니다. 하나의 응용 프로그램은 2008 년부터 2016 년까지 각 프로그래밍 언어의 인기를 검색하는 것입니다. 다른 응용 프로그램은 답변에 따라 사용자 순위를 매기는 것입니다.






이 프로젝트는 스택 오버 플로우 게시물 데이터를 기반으로 구축됩니다. https://archive.org/download/stackexchange/stackoverflow.com-posts.7z에서 데이터 파일을 다운로드 할 수 있습니다. 약 10GB입니다. 데이터 파일을 다운로드 한 후에는 압축을 막아 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 |
웰컴 페이지에서 eloping ologel 페이지에서 [프로젝트 만들기 -> 빈 프로젝트 -> 다음 -> 위치 탐색 CI6226 -IRA -G14-> 마무리]를 선택하십시오.
그런 다음 프로젝트 구조 창에서 [ '+'기호 -> 가져 오기 모듈 -> G14 -Search -Engine (또는 기타) -> 열기 -> import module에서 모듈을 선택하여 모든 프로젝트를 모듈로 추가하십시오 -> maven-> 다음 ... -> finish] .
섹션 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/user입니다 . 왼쪽 상단 상단에 상단 번호 사용자를 입력하고 검색 버튼을 클릭하십시오. 결과는 아래 목록에 렌더링됩니다.
웹 페이지없이 검색 엔진과 상호 작용하려면 가능합니다. 검색 엔진은 웹 페이지가 실제로 데이터를 가져 오는 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
}
]응용 프로그램을 원격 서버에 쉽게 배포하기 위해 Shell 스크립트를 제공했습니다. 이 스크립트는 Unix, Linux, Mac OS 등과 같은 Unix와 같은 시스템에서만 사용할 수 있습니다. 그들은 창에서 사용할 수 없습니다.
배포에 스크립트를 사용하려면 SSH 키를 통해 로그인을 허용하도록 원격 서버를 구성해야합니다. 서버가 그러한 방식으로 구성되지 않은 경우, 구성 방법에 대한이 가이드 자습서를 참조하십시오 : https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key 기반 Authenticatic-on-a-linux-server.
또한 응용 프로그램에 사용되는 TCP 포트를 허용하도록 방화벽을 구성해야합니다.
스크립트는 모든 프로젝트의 루트 디렉토리에 있습니다. 예를 들어, 검색 엔진 프로젝트에서 스크립트는 다음과 같습니다.
다음 단계는 deploy.sh를 수정하여 사용자와 서버를 귀하에게 설정하는 것입니다.
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userJava 환경을 구성하려면 Server.sh를 수정하십시오.
export JAVA_HOME=/path/to/jdk마지막으로 Deploy.sh를 실행하여 프로젝트를 원격 서버에 자동으로 빌드하고 배포 할 수 있습니다.
$ ./deploy.sh