EFCore.ParadeDB.PgSearch
0.3.0
dotnet add package EFCore.ParadeDB.PgSearch --version 0.3.0
NuGet\Install-Package EFCore.ParadeDB.PgSearch -Version 0.3.0
<PackageReference Include="EFCore.ParadeDB.PgSearch" Version="0.3.0" />
<PackageVersion Include="EFCore.ParadeDB.PgSearch" Version="0.3.0" />
<PackageReference Include="EFCore.ParadeDB.PgSearch" />
paket add EFCore.ParadeDB.PgSearch --version 0.3.0
#r "nuget: EFCore.ParadeDB.PgSearch, 0.3.0"
#:package EFCore.ParadeDB.PgSearch@0.3.0
#addin nuget:?package=EFCore.ParadeDB.PgSearch&version=0.3.0
#tool nuget:?package=EFCore.ParadeDB.PgSearch&version=0.3.0
EFCore.ParadeDB.PgSearch
Entity Framework Core extension for ParadeDB pg_search
EFCore.ParadeDB.PgSearch adds support for ParadeDB's pg_search extension to Npgsql.EntityFrameworkCore.PostgreSQL, exposing ParadeDB search functions through the EF.Functions API for LINQ-based full-text search queries. BM25 index creation must be defined using raw SQL. See the EF Core documentation for details on adding raw SQL to migrations.
Requirements & Compatibility
| Component | Supported |
|---|---|
| .NET | 8, 9, 10 |
| ParadeDB | 0.23.0+ |
| PostgreSQL | 15+ (with ParadeDB extension) |
Configuration
Install the Npgsql.EntityFrameworkCore.PostgreSQL NuGet package and configure your DbContext by calling UsePgSearch() on the NpgsqlDbContextOptionsBuilder to enable pg_search function mappings.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContextPool<AppDbContext>(opt =>
{
opt.UseNpgsql(
builder.Configuration.GetConnectionString("AppDatabase"),
o => o.UsePgSearch()
);
});
A complete example is also available in the samples directory demonstrating PgSearch configuration and BM25 index creation.
Function Mappings
The following ParadeDB operations are available through the EF.Functions API:
| ParadeDB Operation | LINQ Methods |
|---|---|
| Match | MatchDisjunction(), MatchConjunction() |
| Phrase | Phrase() |
| Term | Term() |
| Highlighting | Snippet() |
| Proximity | Proximity() |
| BM25 scoring | Score() |
Usage Example
var products = await dbContext
.Products.Where(p =>
EF.Functions.MatchDisjunction(
p.Description,
"with shoes and",
Pdb.Fuzzy(1),
Pdb.Boost(2.3f)
)
)
.Select(p => new
{
p.Id,
p.Description,
Score = EF.Functions.Score(p.Id),
})
.ToListAsync();
Translates to:
SELECT p.id AS "Id", p.description AS "Description", pdb.score(p.id) AS "Score"
FROM products AS p
WHERE p.description ||| 'with shoes and'::pdb.fuzzy(1)::pdb.boost(2.3)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.1)
-
net8.0
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 8.0.11)
-
net9.0
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 9.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.