Skip to content

JoyMoe/PGroonga.EntityFrameworkCore

Repository files navigation

PGroonga.EntityFrameworkCore

PGroonga extension for Npgsql.EntityFrameworkCore.PostgreSQL (PostgreSQL / Npgsql Entity Framework Core provider). It enable the ability to do full text search, especially Chinese, Japanese, and so on, with EntityFramework Core, PostgreSQL and Groonga.

postgresqlpgroonga

GitHub Workflow Status Codecov License NuGet NuGet netstandard2.0

Attention

EF.Functions.Pgroonga* only works with Npgsql.EntityFrameworkCore.PostgreSQL >= 2.2.6 and >= 3.0.1 due to aspnet/EntityFrameworkCore#13454.

Usage

public class ApplicationDbContext : DbContext
{
    // ...

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // ...

        modelBuilder.Entity<Post>()
            .HasIndex(g => g.Content)
            .HasMethod("pgroonga")
            .HasOperators("pgroonga_varchar_full_text_search_ops_v2");

    }
}

public class Startup
{
    // ...

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContextPool<ApplicationDbContext>(options =>
            options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"),
            builder => builder.UsePGroonga()));

        // ...
    }
}

var posts = await _dbContext.Posts.Where(g => g.Content.SimilarSearch(q))
    .OrderByDescending(g => EF.Functions.PgroongaScore())
    .ToArrayAsync();

For more information, see PGroongaLinqExtensions and PGroongaDbFunctionsExtensions.

Features

  • Operators
    • LIKE same as PostgreSQL standard LIKE
    • ILIKE same as PostgreSQL standard ILIKE
    • ==== pgroonga_xxx_full_text_search_ops[_v2] ====
    • &@ Match
    • &@~ Query
    • &@* SimilarSearch
    • &` ScriptQuery
    • &@| MatchIn
    • &@~| QueryIn
    • ==== pgroonga_xxx_term_search_ops[_v2] ====
    • &^ PrefixSearch
    • &^~ PrefixRkSearch
    • &^| PrefixSearchIn
    • &^~| PrefixRkSearchIn
    • ==== pgroonga_xxx_regexp_ops[_v2] ====
    • &~ RegexpMatch
  • Functions
    • pgroonga_command
    • pgroonga_command_escape_value
    • pgroonga_escape
    • pgroonga_flush
    • pgroonga_highlight_html
    • pgroonga_is_writable
    • pgroonga_match_positions_byte
    • pgroonga_match_positions_character
    • pgroonga_normalize
    • pgroonga_query_escape
    • pgroonga_query_expand
    • pgroonga_query_extract_keywords
    • pgroonga_set_writable
    • pgroonga_score
    • pgroonga_snippet_html
    • pgroonga_table_name
    • pgroonga_wal_apply
    • pgroonga_wal_truncate

License

The MIT License

More info see LICENSE

About

PGroonga extension for Npgsql.EntityFrameworkCore.PostgreSQL (PostgreSQL / Npgsql Entity Framework Core provider). It enable the ability to do full text search, especially Chinese, Japanese, and so on, with EntityFramework Core, PostgreSQL and Groonga.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors