php - 在 MySQL 中,如何将包含 "similar"数据的行返回到我所请求的内容?

标签 php jquery mysql search-engine

我正在开发一个搜索功能来搜索型号,我试图让 MySQL 向我显示与我所要求的类似的结果,但 LIKE %$var% 不会这样做。

示例(我们将表称为“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' 然后,我将通过将输入参数中的每个字符替换为“_”来创建多个参数。

即'ABCDEF' 将为我生成以下输入参数。

“_BCDEF”、“A_CDEF”、“AB_DEF”、“ABC_EF”、“ABCD_F”、“ABCDE_”

然后我将输入参数传递给SQL查询并使用OR运算来查找数据。

上述方法会给我相差 1 个字符的单词。

我可以稍微扩展一下,用 UNDERSCORE 替换 2 个字符,然后用 3 个字符替换 4 个字符,依此类推。

我最多需要替换多少个字符,应该取决于字符串的长度。

关于php - 在 MySQL 中,如何将包含 "similar"数据的行返回到我所请求的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421846/

相关文章:

mysql - Google 是否不鼓励使用第 3 方 Go 驱动程序来使用云 sql?

javascript - 如何使用 Blogger 帖子图片作为背景图片?

php - Mysql关系和获取链接数据

php - 在表格中的每一行添加一个 php 按钮

Javascript更改包含php include的div的内部html

javascript - 选中复选框时启用禁用表格内的文本框

javascript - firefox 中用于特定任务的自定义按钮

php - 按大于今天的日期 (d-M-Y) 对 SQL 结果进行排序

mysql - 如何在 MySQL 中使用 tag_ids 获取相关问题?

jquery - 如果另一个元素具有类,则更改元素的可见性