【问题标题】:How to compare strings based on caracters similarity in SQL?如何根据 SQL 中的字符相似性比较字符串?
【发布时间】:2015-06-24 02:10:10
【问题描述】:

如果人们输入“不是真的错误的 url”,我正在努力重定向。

例如,我有一个很好的 URL http://www.website.com/category/foo-bar-if-bar-foo/。 这个是有效的,所以如果用户使用它进入我的网站,我可以检索相应的文章。

但是,如果有人因为另一个网站引用了错误的 url 而以像 http://www.website.com/category/foo-bar-foo/ 这样的正确 URL 进入我的网站,我应该将他重定向到正确的 URL 而不是 404 状态码...

那么我该怎么做呢?最重要的是,我应该这样做吗?

我实际上是在 Laravel 4.2 中使用 Eloquent。

提前谢谢你。

编辑

我对 stackoverflow 的看法有误,感谢您的评论。它使用帖子的唯一 ID。

编辑 2

我查看了SQL中的SOUNDEX函数,如果有一个或两个字符缺失的微小差异,那真的很好。但是,如果我的网址和我的示例一样损坏,那么它显然不再起作用了。不过谢谢它会有用。

【问题讨论】:

  • 这是因为 StackOverflow 使用数字(在您的示例中为 29695569)作为查找的唯一标识符,并且实际上根本不关心 url 的文本字符串部分......这就是 SEO
  • 这就是重点!
  • 这里的神奇词是“模糊搜索”。查看 MySQL 中的 SOUNDEX() 函数 (dev.mysql.com/doc/refman/5.0/en/…)
  • 如果你有一个良好的 url 格式,它会更加用户友好并且对 seo 有影响
  • 好的,谢谢@prehfeldt。我正在看它,正如你所说,它听起来真的很“神奇”。还有 MouradK,再次感谢,但我的 url 格式正确,但有时另一个网站不会引用正确的 url,然后人们点击并实际得到 404,而我的网站管理员工具不喜欢它..

标签: php regex redirect laravel eloquent


【解决方案1】:

只是想了想,您可以创建一个包含所有路径(它可能已经存在)的 SQL 表(启用全文索引)。

如果触发了 404,则劫持它并执行 MATCH(全文搜索)并返回得分最高的路径 MATCH(您也可以考虑使用得分阈值来防止无意义的匹配) .

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2010-10-19
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多