Php Mysql与未按预期工作的匹配

Php Mysql与未按预期工作的匹配,php,mysql,Php,Mysql,我想对mysql结果进行相关性排序 $keyStr="Java PHP"; 工作流程如下: 我用关键字Java、Php 并编写查询以计算相关性 $keyStr="Java PHP"; res\u id和res\u keyskills在恢复中 1 Java,PHP 2 PHP,Java 3 Javascript, Java 4 Java 5 PHP 6 Python 7 PHP, C 等 目前我获得的res\u id1,3,4 但是对于res_id1,23

我想对mysql结果进行相关性排序

$keyStr="Java PHP";  
工作流程如下:

我用关键字
Java、Php

并编写查询以计算相关性

$keyStr="Java PHP";  
res\u id
res\u keyskills
恢复中

1   Java,PHP
2   PHP,Java
3   Javascript, Java
4   Java
5   PHP
6   Python
7   PHP, C

目前我获得的
res\u id
1,3,4

但是对于
res_id
1,23,4,5,7,预期结果的相关性大于0

由于
$keyStr
Java
开头,因此
相关性
被设置为以
Java
开头的
resu keyskills

但是我需要为
res\u keyskills
设置
Java或Php
相关性


为此,我应该在查询中做什么更改,或者我应该更改输入字符串格式(当前以空格分隔)您在查询中指定了
无运算符。当你这么做的时候,你是在说:

查找至少包含两个单词中的一个的行

相反,请尝试指定
+
运算符并重试。这意味着:

查找包含
第一个单词的行
,但如果行也包含
第二个单词
,则将其排名较高

比如:

SELECT *, match(res_keyskills) against ('+".$keyStr."') AS relevance FROM Resumes

SELECT*,包含(res_keyskills)和(“$keyStr.”)作为简历的相关性试试这个。你为什么要将技能存储为连续文本?使用关系数据库时,需要一个skill表和一个连接res和skill的桥接表。然后您可以简单地计算技能在('Java','PHP')中的位置。根据空格分割搜索关键字,然后使用like子句在db中搜索。拆分后,有两个关键字“Java”和“php”。然后使用
select*在数据库中进行搜索,其中的res_keyskill(如“%java%”或“%php%”
@Learner,
您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,使用near')对('Java Php')作为jp_resume的相关性,我的查询是
SELECT*,包含('Java Php')的(res_keyskills)随着jp_的相关性恢复
全文搜索将搜索最小长度为4个字符的单词