-2

如何在查询中显示 1 到 10 分。

例如,我得到 10 条记录,我想匹配最高的 10 条,依此类推。

SELECT DISTINCT c.id, c.title, cv.title2 , match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE) AS score
FROM table1 AS c 
WHERE match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE)

当我进行搜索时,我的数据库会返回一组结果。

如果关键字匹配 c.title、c.title2、c.title3、c.title4 中的 50 个关键字(这只是一个示例),那么我想将 10 分中的 10 分显示为分数,并说这是完美匹配。

如果关键字匹配 c.title、c.title2、c.title3、c.title4 中的 45 个关键字(这只是一个示例),那么我想显示 10 分中的 9 分作为分数。

如果关键字匹配 c.title、c.title2、c.title3、c.title4 中的 30 个关键字(这只是一个示例),那么我想显示 7 分(满分 10 分)作为分数,有些完美。

如果关键字与 c.title、c.title2、c.title3、c.title4 中的 2 个关键字匹配(这只是一个示例),那么我想显示 10 分中的 1 分作为某些关键字匹配的分数。

等等。

4

2 回答 2

2

我认为您只是缺少明显的解决方案。只是按照分数排序...

SELECT DISTINCT c.id, c.title, cv.title2 , match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE) AS score
FROM table1 AS c 
WHERE match ( c.title, c.title2, c.title3, c.title4 ) against ('Support' IN BOOLEAN MODE)
ORDER BY score DESC
于 2012-05-31T19:46:58.533 回答
2

好的,我想我明白了。

SELECT DISTINCT c.id, c.title, cv.title2 , (match ( c.title, c.title2, c.title3, c.title4 ) AGAINST('desktop') * 4.5 )  AS score
FROM job
WHERE
match ( c.title, c.title2, c.title3, c.title4 ) AGAINST('desktop')
ORDER BY score DESC

如果我能写得更好,请告诉我。

于 2012-06-02T12:29:37.843 回答