
Este projeto tem como objetivo explorar o funcionamento do SolrNet no consumo do serviço de search engine Solr em projetos .NET Core.
Após o clone do projeto e siga os passos descritos na etapa de instalação.
git clone https://github.com/AntonioFalcao/SolrDotnetSample.gitSe faz necessário ambiente com seguintes recursos:
To check this functionality:
dotnet --versionFor more details
dotnet --infoTo install:
dotnet tool install --global dotnet-efTo check this functionality:
dotnet-ef --versionTo check this functionality:
docker --versionCom o uso de containerização, podemos provisionar de forma prática a infraestrutura necessária.
Inicialmente utilizaremos o serviço Solr, para atender a necessidade de Search Engine, através do compose ./solr-compose.
docker-compose -f solr-compose.yml up -dO índice padrão, referido como Core pelo Solr está definido como my_core no entrypoint, assim como o mapeamento de porta padrão 8983:8983:
services:
# comment for brevity
ports:
- "8983:8983"
entrypoint:
- solr-precreate
- my_core
# comment for brevityA definição dos Fields no Solr é um passo essencial, para garantir que o dado terá a mesma representação desejada pelo modelo.
Existem dois caminhos para isso, um deles é definir os detalhes dos fields no schema.xml, a outra forma é realizando chamadas direta à API do serviço. Para segunda alternativa, existe o arquivo solr-add-fields.http disponível no projeto:
POST http://localhost:8983/solr/my_core/schema
Content-Type: application/json
{
"add-field":{
"name":"Description",
"type":"string",
"stored":true
},
"add-field":{
"name":"Title",
"type":"string",
"stored":true
},
}
### comment for brevityUma vez provisionado o ambiente e configurado os fields, podemos semear dados através dos passos:
Nesta etapa irá ocorrer a semeadura de dados para o DB relacional.
dotnet ef database update -s ./src/SolrDotnetSample.WebApi/ -p ./src/SolrDotnetSample.Repositories/Duas opções estarão disponíveis, sendo:
- Gerar novos dados.
- Migrar dados do relacional.
docker build -t seed -f ./consoleApp.Dockerfile . && docker run -it seedOs testes unitários e de integração podem ser executados com o respectivo comando:
dotnet testPara executarmos testes de forma funcional, devemos inicialmente executar o projeto para disponibilizar o serviço Web.
docker build -t webapi -f ./webApi.Dockerfile . && docker run -p 5000:5000 webapi O roteamento segue o padrão
http://hostname:port/api/v{version}/controller
Para realizar chamadas, pode estar utilizando o arquivo ./basic-api-call.http através da extensão REST Client, por exemplo:.
/api/v1/...utiliza o banco de dados relacional.
/api/v2/...utiliza o Solr
### V1 - Relational DB
GET http://localhost:5000/api/v1/posts
### V2 - NoSql DB
GET http://localhost:5000/api/v2/posts
### V1 - Relational DB
POST http://localhost:5000/api/v1/posts
Content-Type: application/json
{
"Description": "Description",
"ExpiryDate": "2020-01-01",
"IsActive": true,
"IsSold": true,
"PostDate": "2020-01-01",
"Price": 0,
"Title": "Title"
}
### comment for brevityDetalhes sobre esteira (CI/CD) disponíveis em Project GitHub Actions
Available soon!
We use SemVer for versioning. For the versions available, see the tags on this repository.
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details