php - MySQL中的部分关键字搜索

标签 php mysql search

上下文: 我正在尝试为我的网站创建一个搜索功能,用户可以输入完整的句子,并根据句子中的关键字与 MySQL 数据库中存储的单词的匹配接收结果:

**ID | Skill**
1    | Painting
2    | Carpenter
3    | Builder

例如,用户可能搜索“我想要完成一些绘画”,并使用以下 MySQL 查询(以及 foreach 和explode 函数),它将返回ID 1强>来自数据库:

$stmt = $mysqli->prepare ("SELECT username FROM users WHERE users.id IN (SELECT
skills.userid FROM skills WHERE skills.skill LIKE CONCAT('%',?,'%') GROUP BY 
skills.skill ORDER BY CASE WHEN skills.skill LIKE CONCAT(?,'%') THEN 0 WHEN
skills.skill LIKE CONCAT('% %',?,'% %') THEN 1 WHEN skills.skill LIKE CONCAT('%',?)
THEN 2 ELSE 3 END, skills.skill)");

考试题: 我遇到的问题是,如果用户输入“我想要一名画家”,则不会返回 ID 1。如何修改查询以考虑到 paintingpainter 相似并且应该返回这一事实?

最佳答案

您可以向技能表添加一个名为同义的列,其中包含该技能的一些关键字。

例如,“绘画”行在同义列中将有一个“绘画绘画画家”。

然后更改查询以检查同义列插入技能列。

这是最简单的方法,但要求您为每个技能表行添加一个同义词。

关于php - MySQL中的部分关键字搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738087/

相关文章:

php - 如何在 Laravel 中使用表单向 URL 添加一些参数

php - MVC : how to ajax?

MySQL GROUP BY 和 ORDER BY 命令

search - 如何对来自 MusicBrainz 搜索 API 的结果进行排序

c# - 在数据库表中搜索值并将其放入数据表中

php - 对于 DB、php 和 html 显示,哪种日语字符编码最好?

php - pg_query() - “无法将连接设置为阻塞模式(错误号 8)

mysql - 将多个查询插入临时表 mySQL?

mysql - 多个表和 ID 不匹配的简单查询问题

Azure 搜索服务与最新 Azure SQL 数据库实例中的全文搜索?