【问题标题】:Compare string with values from mysql将字符串与 mysql 中的值进行比较
【发布时间】:2011-12-12 11:42:50
【问题描述】:

我有一个数据库,其中包含与音乐相关的乐队和其他艺术家的名称。现在我想根据这个数据库检查一个包含艺术家姓名的字符串,并找到相似或相等的艺术家以避免不同类型的拼写。

我找到了 php 函数 'similar_text',我确信,在循环期间构建一个脚本来进行这种比较是没有问题的。

进行此类比较的最佳和最快方法是什么?

【问题讨论】:

  • 它是一次性脚本吗?还是常规流程(例如每天或每周)?
  • MySQL soundex 函数也可能有用。
  • 每次上传 mp3 文件时,都会读取 id3-tags 并与数据库进行比较。 “soundex”似乎很有趣。有没有提供 mysql 数据库用例的好文章?
  • 根据您的要求,您可以使用 LIKE 语句吗?
  • LIKE 语句只查找与某物相似的内容,我需要的是找到与某物相似的内容。

标签: php mysql performance comparison


【解决方案1】:

这取决于您的数据大小。如果它是微不足道的 [几万] - 然后运行夜间批处理作业,它将:

  • 从源数据中提取唯一的艺术家姓名
  • 计算 soundex
  • 创建字典,键为 soundex,值 - 艺术家列的原始字符串列表

在此阶段,您必须决定是要自动合并还是手动批准每个重命名。从长远来看,您可以使用拼写正确的辅助表,并找到迄今为止的拼写错误。下次遇到这些情况可以自动处理。

如果 soundex 不够好,您可以尝试使用 php 的similar_text、levenshtein 函数,并将在新添加的数据中找到的名称与您之前已经查看过的艺术家的“已批准”名称进行比较。

【讨论】:

  • 这听起来像是一个合适的解决方案。我会考虑一下,如果没有人提出更好的解决方案,我会坚持你的。谢谢!
  • 我想,我将创建一个夜间脚本,将错误的艺术家分类。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多