Описание : Присвоение для поиска и анализа CI6226 в NTU в Сингапуре.
Группа : 14
Участники : Ке Сяньгу, Ли Джинджин, Ли Сихан, Чжоу Шенгшенг
Дом проекта : https://github.com/zhoushengsheng/ci6226-ira-g14
Поиск информации играет огромную роль в нашей повседневной жизни. Мы всегда хотели бы искать информацию, о которой мы заботимся или хотим знать, используя такие поисковые системы, как Google, Baidu, Bing и так далее. И всегда есть новые друзья, фильмы или продукты, которые мы используем, такие как Twitter, YouTube или eBay, рекомендует нам. Все эти услуги основаны на поиске информации. В определенный момент людей трудно жить без поиска информации в информационную эру. Stack Overflow - это веб -сайт Q & A, который позволяет программистам искать, спрашивать, отвечать и делать комментарии по вопросам. И наш проект направлен на предоставление системы поисковой системы, чтобы пользователь быстро искал свои вопросы на основе части данных переполнения стека. Мы также создали еще два приложения для анализа данных. Одним из приложений является извлечение популярности каждого языка программирования с 2008 по 2016 год. Другое приложение - ранжирование пользователей на основе их ответов.






Этот проект построен на основе данных переполнения стека. Вы можете скачать файл данных по адресу https://archive.org/download/stackexchange/stackoverflow.com-posts.7z. Это довольно большой, приблизительно 10 ГБ. После того, как вы загрузили файл данных, распахните его, чтобы получить файл posts.xml. Приложения этого проекта создают свои индексы и документы в дополнение к файлу данных posts.xml.
Open Eclipse, выберите [Import -> Maven -> Существующие проекты Maven] . Выберите Root Directory как CI6226-IRA-G14 и выберите все проекты в окне. Нажмите «Закончить», чтобы закончить импорт.
Вы можете изменить конфигурацию приложения в файле src/main/resources/application.yml . Например, вы можете изменить порт, путь posts.xml и путь индекса. Пожалуйста, обратитесь к конкретному файлу .yml для получения более подробной информации о параметрах конфигурации.
Каждый проект имеет одинаковую манеру. Например, давайте возьмем поисковую систему: щелкните правой кнопкой мыши . Затем поисковая система будет работать и слушать на 9001 порту. В следующем списке перечислены все основные классы и по умолчанию слушанные порты проектов:
| Приложение | Main.java Package | Порт |
|---|---|---|
| Поисковая система | 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 -> Finish] .
Затем в окне структуры проекта добавьте все проекты в качестве модуля по выбору ['+' Symbol -> Import Module -> Выберите G14 -Search -Engine (или другие) -> Open -> Import Module из внешнего модуля -> Maven -> Next ... -> Finish] .
То же самое, что описано в разделе 2.1. (2).
Щелкните правой кнопкой мыши MAIN.Java и выберите Run '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 и так далее. Они не могут быть использованы в окнах.
Чтобы использовать скрипт для развертывания, вам необходимо настроить удаленный сервер, чтобы разрешить вход через ключ SSH. Если ваш сервер не настроен таким образом, пожалуйста, обратитесь к этому руководству о том, как настроить: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-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