MeiliSearch .NET Embedded
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.
You can use the default SDK for everything, but indexs that are disabled through the SDK wont appear until reenabled with the SDK.
Features
- Embedded MeiliSearch: Integrate MeiliSearch directly into your application.
- Manage Indexes: Manage your indexs and documents through the SDK, you can still use the default Meilisearch SDK.
- Add Documents: Ability to add documents and have validation on if the index is loaded.
- Document Batch System: Automatic batch system for adding documents to indexes that will wait for configured threshold.
- Background Process Management: Automatically handles the lifecycle of the MeiliSearch process.
- Health Monitoring: Regular checks on the health of the MeiliSearch instance to ensure it stays running.
- 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: Ability to use the meilisearch native search capabilities with the index being loaded validation.
- Embedded Ollama: Intergated Ollama directly into your application with a configured model.
- AI Search Capabilities: Ability to use the meilisearch native AI search capabilities with the index being loaded validation.
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:
Install-Package meilisearch.NET
.NET CLI
If you're using the .NET CLI, run the following command in your terminal:
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:
{
"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:
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.
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.
service.Stop();
Restart
Restarts the MeiliSearch process. Stops the process using the Stop method and starts it using the Start method.
service.Restart();
CreateIndex
Creates a new index with the specified name.
service.CreateIndex("my_index");
DeleteIndex
Deletes an existing index with the specified name.
service.DeleteIndex("my_index");
AddDocument
Adds a document to the specified index.
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.
List<string> indexes = service.GetAllIndexes();
Status
Indicates the current status of the MeiliSearch process.
MeiliSearchStatus status = service.Status;
Notes
https://github.com/Mozilla-Ocho/llamafile
License
This project is licensed under the MIT License - see the 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!