首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于字符串相似度的最长公共子串

基于字符串相似度的最长公共子串
EN

Stack Overflow用户
提问于 2014-01-26 17:58:13
回答 1查看 619关注 0票数 0

我有一个列的表,其中包括如下名称:

  1. 家居改善指南
  2. 家居改善建议
  3. 家庭装修费用
  4. 家居园艺小贴士

我希望结果是:

  1. 家庭装修
  2. 家居园艺小贴士

基于“家”这个词的搜索。

这可以在MySQL或PHP中完成,或者两者结合使用。我一直在努力想办法解决这个问题,如果你能直接帮助我的话,我将不胜感激。谢谢。

编辑/解决问题:

我认为只要稍微改变一下逻辑,这个问题就能更容易解决。对于其他有这个问题的人来说,这是我的解决方案。

  1. 获取sql结果
  2. 查找搜索单词的第一次出现,每次一个字符串,并在字符串的右侧获取字符串中的下一个单词。
  3. 结果将包括搜索的单词与独立的相邻单词连接。

不是很好的解决方案,但它适用于我的项目。谢谢大家的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-01-26 18:29:03

这太长了,不能发表评论。

我不认为Levenshtein距离能做你想做的事。考虑:

代码语言:javascript
复制
Home Improvement
Home Improvement Advice on Kitchen Remodeling
Home Gardening

按照Levenshtein的标准,第一和第三项比第一和第三项更接近。然而,我猜你希望第一个和第二个成对。

我对你想要的算法有个想法。就像这样:

  • 将每个返回的字符串与其他字符串进行比较
  • 测量初始重叠的长度
  • 查找所有字符串的最大值,对
  • 重复第二大重叠的过程,依此类推

虽然痛苦,但并非不可能在SQL中实现。也许很痛苦。

这给我的建议是,你在寻找产品的层次结构。我的建议是只包含一个类别列并返回类别。您可能需要手动将这些类别插入到数据中。

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

https://stackoverflow.com/questions/21367105

复制
相关文章

相似问题

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