我有一个使用ajax的自动完成搜索框,它可以正常工作,但它在查找内容方面效率不高。我希望能够搜索某些内容,而不需要使用逗号或冒号来实际返回正确的结果
e.g。如果我想要终结者2:审判日,我搜索终结者2判断日,它不会返回任何东西,因为我遗漏了冒号:。我不希望这种情况发生。由于它的ajax自动完成它很容易仍然找到它,但我希望能够找到的东西,而不需要非字母数字字符
答案 0 :(得分:1)
如果您使用like
使用字符串搜索,那么您可以执行以下操作:
where replace(replace(replace(searchbox, ':', ''), ',', ''), '.') like
replace(replace(replace(title, ':', ''), ',', ''), '.')
你可以看到这很麻烦。你可以通过存储一个" searchable"来简化它。数据库中标题的版本没有标点符号,然后删除用户输入的任何标点符号。
或 - 这可能是更好的解决方案 - 使用全文搜索,记录here。对于搜索框,这可能是您真正想要的。例如,它处理标点符号和部分匹配。
答案 1 :(得分:1)
对于输入terminator 2 judgement day
,搜索所有单词,而不是字符串:
title LIKE '%terminator%' AND title LIKE '%2%' AND title LIKE '%judgement%' AND title LIKE '%day%'