首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Linq2db进行全文检索?

如何用Linq2db进行全文检索?
EN

Stack Overflow用户
提问于 2019-01-29 02:25:39
回答 2查看 549关注 0票数 1

我有.Net Core 2.2项目与MySqlLinq2db提供商。

如何在linq2db中使用全文索引进行搜索?

是否有可能生成任何数据库引擎,而不是特定于数据库的代码?

EN

回答 2

Stack Overflow用户

发布于 2019-11-30 04:17:27

可以这样做:

代码语言:javascript
运行
复制
using (var linqdb = new DatabaseModel())
{
    string searchFT = "wordToSearch*";
    List<TableClass> items = linqdb.GetTable<TableClass>().Where(wo => Sql.Ext.MySql().Match(MySqlExtensions.MatchModifier.Boolean, searchFT, wo.FistName, wo.LastName)).ToList();
}

以下是文档的链接:https://linq2db.github.io/api/LinqToDB.DataProvider.MySql.MySqlExtensions.html

可以在这里找到一个示例:https://github.com/linq2db/linq2db/blob/master/Tests/Linq/Linq/FullTextTests.MySql.cs

票数 1
EN

Stack Overflow用户

发布于 2019-01-29 07:12:52

只要数据库支持一个可以支持大量文本的文本字段,那么您只需通过执行以下操作向该字段添加一个索引:

类MyContext : DbContext {公共DbSet博客{ get;set;}

代码语言:javascript
运行
复制
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .HasIndex(b => b.Url);
}

}

代码语言:javascript
运行
复制
public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

在EF核心中,如果你在你的Where函数中使用了像StartsWith,Contains或EF.Functions.Like这样的东西,那么我相信这在SQL中会被翻译成like。因此,在EF核心中,这将使用您在这样的数据库中的字段的全文搜索。

我认为对linq2db来说也应该是一样的。

所以,是的,这对于任何数据库都是通用的。

然而,正如我曾经使用SQLite发现的那样,我不能将索引添加到包含大量数据的文本字段中,因为数据库不支持它……(从内存来看,它被限制在大约1000字节左右)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54408134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档