查找包含相似字符串的sql记录

2024-04-24

我的下表有 2 列:ID 和标题,其中包含超过 500.000 条记录。例如:

ID  Title
--  ------------------------
1   Aliens
2   Aliens (1986)
3   Aliens vs Predator
4   Aliens 2
5   The making of "Aliens"

我需要找到非常相似的记录,我的意思是它们有 3-6 个字母的不同,通常这种差异出现在标题的末尾。所以我必须设计一个返回记录号的查询。 1,2和4。我已经研究了levenstein距离,但我不知道如何应用它。另外,由于记录数量较多,查询不应花费整晚的时间。

感谢您的任何想法或建议


如果您确实想按照您在问题中提出的确切方式来定义相似性,那么您将 - 正如您所说 - 必须实现 Levensthein 距离计算。在对 DataReader 检索的每一行进行计算的代码中或作为 SQL Server 函数。

所提出的问题实际上比乍一看更棘手,因为你不能假设知道问题是什么相互共享两个字符串之间的元素可能是。

因此,除了编辑距离之外,您可能还想指定实际必须匹配的连续字符的最小数量(以便得出有效的相似性)。

总之:这听起来像是一种过于复杂且耗时/缓慢的方法。

有趣的是,在 SQL Server 2008 中,您有不同之处 http://msdn.microsoft.com/en-us/library/ms188753.aspx函数其中may用于类似的事情。

它评估两个字符串的语音值并计算差异。我不确定你是否能让它正常工作于多词表达,例如电影标题,因为它不能很好地处理空格或数字,并且过分强调字符串的开头,但它仍然是一个有趣的谓词要注意。

如果你是什么actually试图描述某种搜索功能,那么您应该研究一下全文搜索 http://msdn.microsoft.com/en-us/library/ms142571.aspxSQL Server 2008 的功能。它提供了内置的同义词库支持 http://msdn.microsoft.com/en-us/library/ms142491.aspx, 花哨的 SQL谓词 http://msdn.microsoft.com/en-us/library/ms187787.aspx以及“最佳匹配”的排名机制

编辑:如果你想消除重复项,也许你可以看看 SSIS模糊查找和模糊群变换 http://msdn.microsoft.com/nb-no/library/ms345128.aspx。我自己还没有尝试过,但它看起来是一个很有前途的线索。

EDIT2:如果您不想深入研究 SSIS 并且仍然为 Levenshtein Distance 算法的性能而苦苦挣扎,您也许可以尝试这个算法 http://sites.google.com/site/sqlblindman/fuzzysearchalgorithm这似乎不太复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找包含相似字符串的sql记录 的相关文章

随机推荐

  • 为什么 std::list 上的 Push_back 会更改使用 rbegin 初始化的反向迭代器?

    根据我发现的一些 STL 文档 在 std list 中插入或删除元素不会使迭代器失效 这意味着允许循环列表 从begin to end 然后使用push front添加元素 例如 在下面的代码中 我用元素 a b 和 c 初始化一个列表
  • Slim 框架总是返回 404 错误

    这些天我正在使用纤薄的框架作为我开发 php web api 的最简单的工具 使用这两篇 文章 科恩拉茨 http coenraets org blog 2011 12 restful services with jquery php an
  • 登录失败时生成 Python PXSSH GUI

    当登录失败时 我无法阻止 GUI 的生成 失败并生成 GUI 的简单示例 gt gt gt import pxssh gt gt gt gt gt gt ssh pxssh pxssh gt gt gt ssh force password
  • Android SmsManger 发送报告

    我向多个联系人发送多条消息 并为每个联系人使用以下代码 private void sendSMS String first String last String id String phoneNumber try String messag
  • 如何使 XML 字符串加粗、下划线等?

    http docs fusioncharts com charts contents Styles Font html http docs fusioncharts com charts contents Styles Font html
  • 将 UTC 日期转换为本地日期

    我正在将纪元时间 UTC 格式 转换为如下所示的格式 现在我尝试了不同的答案来转换UTCDate from UTC到当地时间 但我没有得到当地时间 任何帮助 将不胜感激 String epochTime 1436831775043 Date
  • 如何使用 Perl 的 LWP 提取网站的 XML 并保存在文件中?

    如何从网站提取信息 http tv yahoo com listings http tv yahoo com listings 然后创建一个 XML 文件 我想保存它以便稍后解析并使用 JavaScript 显示信息 我对 Perl 很陌生
  • mysql 中临时表的旧代码 TYPE=HEAP 错误

    我有一个可以运行的旧代码 CREATE TEMPORARY TABLE temp tree id INTEGER parent id INTEGER type HEAP 现在我有 mysql 5 并且这段代码不起作用 在内存中创建临时表的正
  • CreateProcess错误=740,请求的操作需要提升

    我有一个定期更新的网络小程序 我最终决定制作一个更新程序 但是 当我用 java 下载更新时 它下载得很好 但是 当我尝试使用以下命令解压 运行更新时Runtime getRuntime exec pathToFile I get Crea
  • 如何使用 Perl 提取 HTML 标题?

    有没有办法使用 Perl 提取 HTML 页面标题 我知道它可以在表单提交期间作为隐藏变量传递 然后以这种方式在 Perl 中检索 但我想知道是否有一种方法可以在不提交的情况下执行此操作 比如说 我有一个这样的 HTML 页面 然后在 Pe
  • 打印的条形码不清晰 (WPF)

    我的应用程序中需要条形码打印模块 但无法弄清楚如何正确打印条形码 看来分辨率太低了 我在用着禅宗条形码 https barcoderender codeplex com 正如您在所附照片中所看到的 顶部条形码是从打印机软件打印的 证明打印机
  • 注册不起作用,注册未定义错误 React Native

    我刚刚从 Udemy 购买了 React Native 的课程 Stephen Grider 是该课程的作者 所以基本上我是在他打字的时候和他一起打字的 但不幸的是我在跟踪应用程序的注册过程中陷入了错误 每当我在输入电子邮件和密码后单击 注
  • 如何在列表/字符串/范围中查找指定项目后面的特定项目?

    给定一个input任何类型的序列 列表 字符串 范围 如何找到下一个项目input遵循指定项目 另外 如果该项目不存在或后面没有任何内容 该函数应该返回None 我尝试将输入类型转换为列表 然后从列表中查找位置 然后获取下一个项目 但这并不
  • 如何使用 JDBC 进行扩展插入而不构建字符串?

    我有一个应用程序可以解析日志文件并将大量数据插入数据库 它是用 Java 编写的 并通过 JDBC 与 MySQL 数据库通信 我尝试了不同的插入数据的方法 以找到适合我的特定用例的最快方法 目前看来表现最好的方法是发出扩展插入 例如 具有
  • 在 Android 锁屏上显示自定义信息 [重复]

    这个问题在这里已经有答案了 我想自定义锁屏 The default Lock screen is like this 我想修改锁定屏幕的这一部分并让所有其他内容保持不变 当用户锁定手机时 它应该在红色框中显示自定义信息 到目前为止 我已经看
  • mockk java.lang.AssertionError:验证失败:调用 1 of 1:未调用

    我正在使用模拟运行单元测试 当尝试验证方法时 我收到断言错误 并且不知道如何运行测试 这是我的测试方法 get Rule var rule TestRule InstantTaskExecutorRule val autoDownloads
  • Django 中的内联表单集 - 删除某些字段

    我需要创建一个内联表单集 a 排除一些字段MyModel完全显示出来 b 显示一些字段MyModel但阻止它们被编辑 我尝试使用下面的代码 使用values 为了将查询集过滤为我想要返回的值 然而 这失败了 有人有什么想法吗 class P
  • DataDog 事件会自动恢复

    我创建了一个事件监视器 用于捕获有错误的事件 并通过特殊的信使通知有关警报的信息 一切都很顺利 但我注意到此类警报会自行自动恢复一段时间 As I understand it is because of this parameter 因此
  • VB.NET中获取CheckBoxList的所有选中值

    我用过ASPCheckBoxList控制 现在我想要的是在VB代码中获取所有选定的值 HTML
  • 查找包含相似字符串的sql记录

    我的下表有 2 列 ID 和标题 其中包含超过 500 000 条记录 例如 ID Title 1 Aliens 2 Aliens 1986 3 Aliens vs Predator 4 Aliens 2 5 The making of A