我正在开发一个搜索功能来搜索模型号,我正在尝试让MySQL向我显示与我所要求的相似的结果,但是LIKE%$var%没有做到这一点。
示例(我们将调用table,“tbl_models”):
id model
+-------+--------------------+
| 1 | DV6233SE |
| 2 | Studio 1440 |
| 3 | C762NR |
+-------+--------------------+
使用当前使用的搜索框进行搜索时:
SELECT id, model FROM tbl_models WHERE model LIKE %$var% ORDER BY id DESC
如果我搜索“C7”,它将返回“C762NR”,这是好的,但说我是搜索“C760”或“C700”或打字“C726NR”?在MySQL(或PHP、JS、jQuery)中,有没有一种方法可以扩展返回结果的限制,以包含不同的变体或接近的匹配项?
我也不想找人帮我写,只要往正确的方向推一推就很有帮助了!
最佳答案
如果我用逻辑来回答你的问题,我就走这条路。
找到接近的匹配项-
我将采用用户最初键入的输入参数。例如“ABCDEF”
然后,我将从中创建多个参数,方法是将输入参数中的每个字符替换为“\u”。
即“ABCDEF”将为我生成以下输入参数。
‘u BCDEF’、‘A_CDEF’、‘AB_DEF’、‘ABC_EF’、‘abu F’、‘ABCDE’
然后我将输入参数传递给SQL查询,并使用OR操作查找数据。
上面的方法会给我1个字符不同的单词。
我可以通过用下划线替换2个字符,然后是3个字符,然后是4个字符来扩展它。
最多需要替换多少个字符,取决于字符串的长度。