All checks were successful
build-packages / meilisearch-dotnet-packages (push) Successful in 1m23s
190 lines
6.0 KiB
Markdown
190 lines
6.0 KiB
Markdown
# MeiliSearch .NET Embedded
|
|
|
|

|
|

|
|

|
|
[](#)
|
|
[](LICENSE)
|
|
|
|
## Overview
|
|
|
|
MeiliSearch .NET Integration is a NuGet package that seamlessly embeds MeiliSearch into your C# application. It manages the background process and health checks for you, simplifying the integration of full-text search capabilities. In future updates, it will also handle automatic compression and decompression of indexes to help manage local storage usage effectively.
|
|
|
|
## Features
|
|
|
|
- [x] **Embedded MeiliSearch**: Integrate MeiliSearch directly into your application.
|
|
- [x] **Manage Indexes**: Manage your indexs and documents through the SDK, you can still use the default Meilisearch SDK.
|
|
- [x] **Add Documents**: Ability to add documents and have validation on if the index is loaded.
|
|
- [x] **Background Process Management**: Automatically handles the lifecycle of the MeiliSearch process.
|
|
- [x] **Health Monitoring**: Regular checks on the health of the MeiliSearch instance to ensure it stays running.
|
|
- [x] **API Key Management**: An API key is automatically regenerated every time the MeiliSearch service starts unless one is specified in the configuration.
|
|
- [ ] **Resource Monitoring**: Monitor the resources being used including storage by your MeiliSearch.
|
|
- [ ] **Future Index Management**: Upcoming feature to automatically compress and decompress indexes for optimized local storage.
|
|
- [ ] **Caching Mechanism**: Cache the comrpessed indexes so they are returned when you ask for a list of all indexs.
|
|
- [ ] **Search Capabilities**: Cache the comrpessed indexes so they are returned when you ask for a list of all indexs.
|
|
- [ ] **AI Search Capabilities**: Cache the comrpessed indexes so they are returned when you ask for a list of all indexs.
|
|
|
|
## Installation
|
|
|
|
To add the MeiliSearch .NET Integration package to your project, you can install it directly from NuGet. Follow the steps below based on your preferred method:
|
|
|
|
### Package Manager Console
|
|
|
|
Open the Package Manager Console in Visual Studio and run the following command:
|
|
|
|
```bash
|
|
Install-Package meilisearch.NET
|
|
```
|
|
|
|
### .NET CLI
|
|
|
|
If you're using the .NET CLI, run the following command in your terminal:
|
|
|
|
```bash
|
|
dotnet add package meilisearch.NET
|
|
```
|
|
|
|
## AppSettings Options
|
|
|
|
- **Port**: The port on which MeiliSearch will run (default is `7700`).
|
|
- **UiEnabled**: A boolean value to enable or disable the MeiliSearch UI (default is `true`).
|
|
- **ApiKey**: An optional API key. If specified, this key will be used; otherwise, a new key will be generated each time the service starts.
|
|
|
|
## Configuration
|
|
|
|
The MeiliSearch service can be configured using the `MeiliSearchConfiguration` class. The following options are available:
|
|
|
|
- **Port**: The port on which MeiliSearch will run (default is `7700`).
|
|
- **UiEnabled**: A boolean value to enable or disable the MeiliSearch UI (default is `true`).
|
|
- **ApiKey**: An optional API key. If specified, this key will be used; otherwise, a new key will be generated each time the service starts.
|
|
|
|
You can configure these options in your `appsettings.json` file as follows:
|
|
|
|
```json
|
|
{
|
|
"MeiliSearch": {
|
|
"Port": 7700,
|
|
"UiEnabled": true,
|
|
"ApiKey": "your_api_key"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Usage
|
|
|
|
To set up the MeiliSearch service in your application, configure dependency injection as shown below:
|
|
|
|
```csharp
|
|
using System.Net;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.SystemDefault;
|
|
|
|
var builder = Host.CreateApplicationBuilder();
|
|
builder.Configuration.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
|
|
builder.Services.AddMeiliSearchService();
|
|
builder.Logging.ClearProviders();
|
|
builder.Logging.AddConsole();
|
|
builder.Logging.SetMinimumLevel(LogLevel.Information);
|
|
builder.Services.AddLogging();
|
|
|
|
var app = builder.Build();
|
|
app.Run();
|
|
Console.ReadLine();
|
|
```
|
|
|
|
## MeiliSearchService Class Usage Guide
|
|
|
|
### Methods
|
|
|
|
#### Start
|
|
|
|
Starts the MeiliSearch process. Logs the start of the process, sets the status to **Starting**, and attempts to start the process.
|
|
|
|
```csharp
|
|
MeiliSearchService service = new MeiliSearchService();
|
|
service.Start();
|
|
```
|
|
|
|
#### Stop
|
|
|
|
Stops the MeiliSearch process. Logs the stop of the process, sets the status to **Stopping**, and attempts to stop the process.
|
|
|
|
```csharp
|
|
service.Stop();
|
|
```
|
|
|
|
#### Restart
|
|
|
|
Restarts the MeiliSearch process. Stops the process using the **Stop** method and starts it using the **Start** method.
|
|
|
|
```csharp
|
|
service.Restart();
|
|
```
|
|
|
|
#### CreateIndex
|
|
|
|
Creates a new index with the specified name.
|
|
|
|
```csharp
|
|
service.CreateIndex("my_index");
|
|
```
|
|
|
|
#### DeleteIndex
|
|
|
|
Deletes an existing index with the specified name.
|
|
|
|
```csharp
|
|
service.DeleteIndex("my_index");
|
|
```
|
|
|
|
#### AddDocument
|
|
|
|
Adds a document to the specified index.
|
|
|
|
```csharp
|
|
public class MyDocument : IDocument
|
|
{
|
|
public string Id { get; set; }
|
|
public string Title { get; set; }
|
|
}
|
|
|
|
var document = new MyDocument { Id = "1", Title = "My Document" };
|
|
service.AddDocument("my_index", document);
|
|
```
|
|
|
|
#### GetAllIndexes
|
|
|
|
Retrieves a list of all existing indexes.
|
|
|
|
```csharp
|
|
List<string> indexes = service.GetAllIndexes();
|
|
```
|
|
|
|
### Status
|
|
|
|
Indicates the current status of the MeiliSearch process.
|
|
|
|
```csharp
|
|
MeiliSearchStatus status = service.Status;
|
|
```
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions! Please feel free to submit issues, pull requests, or suggestions to improve this project.
|
|
|
|
## Support
|
|
|
|
For any issues or questions, please open an issue on GitHub or contact us via [your contact method].
|
|
|
|
---
|
|
|
|
Feel free to customize this README as necessary for your package, especially regarding the project name and license details!
|
|
|
|
---
|