我有一个用户将从他们自己的输入中搜索的短语数据库。我希望他们找到这个短语,无论他们使用什么标点符号。例如,如果短语“嘿,你好吗?”在行中,我希望以下所有搜索都返回它:
现在,我有列'短语'和'phrase_search'。短语搜索是一个简短的短语版本,所以我们的例子就是'嘿 - 你是怎么样的'。
无论如何在没有存储短语两次的情况下实现这一目标吗?
谢谢!
-Nicky
答案 0 :(得分:3)
你所做的可能是最节省时间的方式。是的,它需要两倍的空间,但这是一个问题吗?
如果 是个问题,可能的解决方案是将搜索字符串转换为使用通配符(例如%Hey%how%are%you%
),然后通过应用代码过滤代码中的SQL结果对数据库输入和搜索字符串进行相同的剥离功能并进行比较。这背后的基本原理是,在单词之间应该存在相对较少的非标点符号匹配,所以你仍然让MySQL做“繁重的”,而你的PHP / Perl / Python /任何代码都能做到对相对较少的行进行更细粒度的检查。
(这假设你有一些代码调用它,当然不是用户从命令行输入SQL查询。)