Descrição : atribuição para CI6226 Recuperação e análise de informações na NTU em Cingapura.
Grupo : 14
Membros : Ke Xiangyu, Li Jinjin, Li Xihan, Zhou Shengsheng
Home do projeto : https://github.com/zhoushengsheng/ci6226-ira-g14
A recuperação de informações desempenha um papel enorme em nossa vida cotidiana. Sempre gostaríamos de procurar informações que nos preocupamos ou queremos saber usando mecanismos de pesquisa como Google, Baidu, Bing e assim por diante. E sempre há novos amigos, filmes ou produtos que usamos como Twitter, YouTube ou eBay recomendam para nós. Esses serviços são todos baseados na recuperação de informações. Em um certo ponto, os seres humanos são difíceis de viver sem recuperação de informações em uma era da informação. O Stack Overflow é um site de perguntas e respostas que permite que os programadores pesquisem, perguntem, respondam e faça comentários sobre perguntas. E nosso projeto pretende fornecer um sistema de mecanismo de pesquisa para permitir que o usuário pesquise rapidamente suas perguntas com base em parte dos dados do Stack Overflow. Também criamos outros dois aplicativos para analisar os dados. Um aplicativo é recuperar a popularidade de cada linguagem de programação de 2008 a 2016. O outro aplicativo é classificar os usuários com base em suas contagens de respostas.






Este projeto é criado com base nos dados de pilha de transbordamentos de pilha. Você pode baixar o arquivo de dados em https://archive.org/download/stackexchange/stackoverflow.composs.7z. É bastante grande, aproximadamente 10 GB. Depois de baixar o arquivo de dados, descompacte -o para obter o arquivo posts.xml. Os aplicativos deste projeto criam seus índices e documentos no topo do arquivo de dados do posts.xml.
Eclipse aberto, escolha [Importar -> Maven -> Projetos MAVEN existentes] . Selecione o diretório raiz como CI6226-IRA-G14 e selecione todos os projetos na janela. Clique em Concluir para terminar a importação.
Você pode alterar a configuração do aplicativo no arquivo SRC/Main/Resources/Application.yml . Por exemplo, você pode alterar o caminho da porta, posta.xml e caminho de índice. Consulte o arquivo .yML específico para obter mais detalhes dos parâmetros de configuração.
Todo projeto tem a mesma maneira de executar. Vamos pegar o mecanismo de pesquisa, por exemplo: clique com o botão direito do mouse no main.java no pacote CI6226.ira.g14.search.Engine e selecione [Executar como -> Spring Boot App] . Em seguida, o mecanismo de pesquisa será executado e ouça na porta 9001. A lista a seguir lista todas as principais classes e portas ouvidas dos projetos:
| Aplicativo | Pacote main.java | Porta |
|---|---|---|
| Mecanismo de pesquisa | CI6226.ira.g14.search.engine.main.java | 9001 |
| Tendência do idioma | CI6226.ira.g14.app.language.trend.main.java | 9002 |
| Respondendo a classificação do usuário | CI6226.ira.g14.app.answering.user.ranking.main.java | 9003 |
| Front-end | CI6226.ira.g14.fe.main.java | 8000 |
Abra o Intellij, na página de boas -vindas, selecione [Criar projeto -> Projeto vazio -> Avançar -> Navegue Localização para CI6226 -IRA -G14 -> FINAL] .
Em seguida, na janela Estrutura do projeto, adicione todos os projetos como módulo por selecione ['+' símbolo -> Módulo de importação -> Escolha G14 -Search -Engine (ou outros) -> Abrir -> Importar módulo do módulo externo -> MAVEN -> Avançar ... -> acabar] .
O mesmo que descrito na Seção 2.1. (2).
Clique com o botão direito do mouse no main.java e selecione Run 'Main'. Para obter pacotes e portas detalhados main.java, consulte a Seção 2.1. (3).
Se você não tiver o MAVEN instalado no seu sistema, consulte o guia de instalação do Maven para instalar o Maven. O guia de instalação está em https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html.
O mesmo que descrito na Seção 2.1. (2).
Vamos levar o mecanismo de pesquisa, por exemplo:
Digite o diretório raiz do projeto do mecanismo de pesquisa:
$ cd /path/to/g14-search-engine
Execute o aplicativo:
$ mvn spring-boot:run
E o aplicativo do mecanismo de pesquisa será executado e ouvirá na porta 9001. Outros aplicativos compartilham o mesmo procedimento para executar em um terminal.
Você pode usar o navegador da web para visitar http: // localhost: 8000 para acessar a página principal da web do front -end. A caixa de entrada de pesquisa está bem no centro da página da web. Você pode inserir palavras -chave de pesquisa e selecionar qual campo você deseja pesquisar. Em seguida, clique no botão de pesquisa e os resultados da pesquisa serão renderizados. Se você deseja outra pesquisa, basta inserir palavras -chave na caixa de entrada superior esquerda, em vez de voltar a página principal.
O URL é http: // localhost: 8000/idiomas . Selecione Iniciar ano e término do ano e clique no botão Pesquisar. Os resultados da tendência do idioma serão renderizados em um gráfico.
O URL é http: // localhost: 8000/usuários . Entre os usuários do número superior na caixa superior esquerda e clique no botão Pesquisar. Os resultados serão renderizados na lista abaixo.
Se você deseja interagir com o mecanismo de pesquisa sem a página da web, você pode. O mecanismo de pesquisa expõe uma API da qual a página da web busca dados.
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
}
]Fornecemos scripts de shell para implantar facilmente os aplicativos no servidor remoto. Observe que esses scripts só podem ser usados em um sistema semelhante ao UNIX como Unix, Linux, Mac OS e assim por diante. Eles não podem ser usados no Windows.
Para usar o script para implantação, você precisa configurar seu servidor remoto para permitir o login via tecla SSH. Se o seu servidor não estiver configurado dessa maneira, consulte este tutorial para obter o guia sobre como configurar: https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key baseado em-Authentication-on---Linux-Server.
E você também precisa configurar o firewall para permitir que a porta TCP seja usada nos aplicativos.
Os scripts estão no diretório raiz de todos os projetos. Por exemplo, no projeto do mecanismo de pesquisa, os scripts são:
O próximo passo é modificar o implantação.sh para definir o usuário e o servidor para o seu:
REMOTE_SERVER=your_server_address
REMOTE_USER=your_server_userE modifique o servidor.sh para configurar o ambiente Java:
export JAVA_HOME=/path/to/jdkPor fim, você pode executar o implantação.sh para criar e implantar automaticamente o projeto no servidor remoto:
$ ./deploy.sh