【发布时间】:2014-05-09 09:44:12
【问题描述】:
上下文: 我正在尝试为我的网站创建一个搜索功能,用户可以输入完整的句子并根据句子中的关键字与存储在 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 相似且应返回的事实?
【问题讨论】:
-
您将使用同义词表来包含所有技能的同义词。
-
考试题?你要求我们做你的功课吗?
-
@CarlMarkham PHP 和 MySQL 的家庭作业?什么样的教育者会使用这些工具进行教学?别傻了。
-
@CarlMarkham 这是结构化问题解决中使用的描述符,用于说“到底是什么问题”,即我被问到的考试问题是什么