SolrDotnetSample: GitHub File Free Download

Sample with .NET Core and SolrNet

CodeFactor
.NET Core
Console App - Docker Image CI
WebApi - Docker Image CI

Este projeto tem como objetivo explorar o funcionamento do SolrNet no consumo do serviço de search engine Solr em projetos .NET Core.

Getting Started

Após o clone do projeto e siga os passos descritos na etapa de instalação.

git clone https://github.com/AntonioFalcao/SolrDotnetSample.git

Prerequisites

Se faz necessário ambiente com seguintes recursos:

To check this functionality:

dotnet --version

For more details

dotnet --info

To install:

dotnet tool install --global dotnet-ef

To check this functionality:

dotnet-ef --version
  • Docker – The container platform used

To check this functionality:

docker --version

Installing

Com 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 -d

O í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 brevity

Definindo Fields

A 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 brevity

Semeando dados no Solr

Uma vez provisionado o ambiente e configurado os fields, podemos semear dados através dos passos:

  1. Aplicar migrations do EF Core, que já se encarregará do Seed para o DB relacional.

Nesta etapa irá ocorrer a semeadura de dados para o DB relacional.

dotnet ef database update -s ./src/SolrDotnetSample.WebApi/ -p ./src/SolrDotnetSample.Repositories/
  1. Executar aplicação console e selecionar opção de semeadura para o Solr.

Duas opções estarão disponíveis, sendo:

  1. Gerar novos dados.
  2. Migrar dados do relacional.
docker build -t seed -f ./consoleApp.Dockerfile . && docker run -it seed

Running the tests

Automated tests

Os testes unitários e de integração podem ser executados com o respectivo comando:

dotnet test

Functional tests

Para 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 brevity

Deployment

Detalhes sobre esteira (CI/CD) disponíveis em Project GitHub Actions

Built With

Microsoft Stack
Solr Stack
  • Solr – Search Engine used.
  • SolrNet – Apache Solr client for .NET

Contributing

Available soon!

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

Authors

  • Antônio Falcão – GitHub

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License – see the LICENSE.md file for details

Acknowledgments

  • Nothing more, for now.

Go to GitHub File