Php MySQL中的部分关键字搜索
背景: 我正在尝试为我的网站创建一个搜索功能,用户可以在其中键入完整的句子,并根据句子中的关键字与MySQL数据库中存储的单词的匹配返回结果:Php MySQL中的部分关键字搜索,php,mysql,search,Php,Mysql,Search,背景: 我正在尝试为我的网站创建一个搜索功能,用户可以在其中键入完整的句子,并根据句子中的关键字与MySQL数据库中存储的单词的匹配返回结果: **ID | Skill** 1 | Painting 2 | Carpenter 3 | Builder $stmt = $mysqli->prepare ("SELECT username FROM users WHERE users.id IN (SELECT skills.userid FROM skills WHERE
**ID | Skill**
1 | Painting
2 | Carpenter
3 | Builder
$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)");
例如,用户可以搜索“我希望完成一些绘制”,并使用以下MySQL查询(以及foreach和explode函数),它将从数据库返回ID 1:
**ID | Skill**
1 | Painting
2 | Carpenter
3 | Builder
$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。如何修改查询以说明绘画和绘画是相似的,因此应该返回这一事实?您可以向技能表中添加一个名为同义词的列,其中包含该技能的某些关键字 例如,“绘画”行在Synoumous列中将有一个“绘画画家” 然后将查询更改为检查同义列而不是技能列
这是最简单的方法,但要求您为每个技能表行放置同义词。您将使用同义词表包含所有技能的同义词。考试问题?你要我们帮你做作业吗?@CarlMarkham PHP和MySQL做作业?什么样的教育家用这些工具教学?别傻了。@CarlMarkham这是一个在结构化问题解决中使用的描述词,用来说“到底是什么问题”,也就是说,我被问的考试题是什么