Php Mysql与未按预期工作的匹配
我想对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
$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个字符的单词