mySQL中的标点符号不敏感搜索

时间:2009-12-16 06:15:30

标签: mysql

我有一个用户将从他们自己的输入中搜索的短语数据库。我希望他们找到这个短语,无论他们使用什么标点符号。例如,如果短语“嘿,你好吗?”在行中,我希望以下所有搜索都返回它:

  • “嘿!你好吗?!”
  • “嘿,你好吗?”
  • “嘿:)你好吗?”

现在,我有列'短语'和'phrase_search'。短语搜索是一个简短的短语版本,所以我们的例子就是'嘿 - 你是怎么样的'。

无论如何在没有存储短语两次的情况下实现这一目标吗?

谢谢!

-Nicky

1 个答案:

答案 0 :(得分:3)

你所做的可能是最节省时间的方式。是的,它需要两倍的空间,但这是一个问题吗?

如果 是个问题,可能的解决方案是将搜索字符串转换为使用通配符(例如%Hey%how%are%you%),然后通过应用代码过滤代码中的SQL结果对数据库输入和搜索字符串进行相同的剥离功能并进行比较。这背后的基本原理是,在单词之间应该存在相对较少的非标点符号匹配,所以你仍然让MySQL做“繁重的”,而你的PHP / Perl / Python /任何代码都能做到对相对较少的行进行更细粒度的检查。

(这假设你一些代码调用它,当然不是用户从命令行输入SQL查询。)