带有 Jaro-Winkler 相似距离算法的 EF Core

Posted

技术标签:

【中文标题】带有 Jaro-Winkler 相似距离算法的 EF Core【英文标题】:EF Core with Jaro-Winkler similarity distance algorithm 【发布时间】:2021-12-05 00:16:12 【问题描述】:

我想使用一些相似距离算法(如 Jaro-Winkler)在我的数据库中搜索字符串。但是 EF Core 无法翻译此类表达式。所以你不能使用如下表达式:

query.Where(x => JaroWinkler.Similarity(x.Title, someText) > 0.5);

我的问题是如何使用 EF Core 实现这一点?有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

在您的数据库供应商 SQL 方言中实现算法并注册它https://docs.microsoft.com/en-us/ef/core/querying/user-defined-function-mapping

一些数据库供应商有一些用于全文搜索的比较算法或扩展(即MS Sql DIFFERENCE 或 FREETEXT)

或者在内存处理中使用。

【讨论】:

以上是关于带有 Jaro-Winkler 相似距离算法的 EF Core的主要内容,如果未能解决你的问题,请参考以下文章

亲和传播偏好参数

常见的距离算法和相似度(相关系数)计算方法

常见的相似度度量算法

文本相似度算法之编辑距离算法

文本相似度算法之编辑距离算法

计算两组标签相似度算法——levenshtein distance 编辑距离算法