上下文: 我正在尝试为我的网站创建一个搜索功能,用户可以输入完整的句子,并根据句子中的关键字与 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。如何修改查询以考虑到 painting 和 painter 相似并且应该返回这一事实?
最佳答案
您可以向技能表添加一个名为同义的列,其中包含该技能的一些关键字。
例如,“绘画”行在同义列中将有一个“绘画绘画画家”。
然后更改查询以检查同义列插入技能列。
这是最简单的方法,但要求您为每个技能表行添加一个同义词。
关于php - MySQL中的部分关键字搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22738087/