【发布时间】:2018-12-22 10:05:14
【问题描述】:
给定一种字符串匹配算法,该算法适用于某些字符串(例如“123456789”)和字符串模式(例如“1*******9”)。 字符串模式不是任何类型的正则表达式或 SQL LIKE 模式 - 它们仅提供“*”占位符,表示“单个数字或字母”。
因此,算法会将这些值视为“相等”:
12ABCDE89
12A***E89
**A****8*
*********
数据存储在关系数据库 (MS SQL Server) 中,.net 核心应用程序通过 EntityFramework Core 对其进行寻址。 所需的场景是获取 500 个输入字符串(特定或模式)并在数据库中(包含 100 万行的表中)查找匹配的行。
首先我使用 LIKE 模式匹配来实现它(首先我将输入字符串转换为 LIKE 模式,然后为 WHERE 子句构建谓词),但测试表明它的性能无法接受。
我可以使用 MSSQL 的全文搜索功能来执行此任务吗?在这种情况下,谓词会是什么样子?关于实施还有其他想法吗?
【问题讨论】:
标签: sql-server full-text-search entity-framework-core