Php 搜索标签并按排名排序
Php 搜索标签并按排名排序,php,mysql,phpmyadmin,Php,Mysql,Phpmyadmin,tags表有三列web,tags,rank 此表已启用全文搜索 我能够通过标签搜索并通过此查询获取网站列表 SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('search,searchengine,search,web' IN BOOLEAN MODE) 但我想按等级排列结果。我该怎么做 我也尝试过这个,但它提供了一些其他的东西 SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('
tags表
有三列web,tags,rank
此表已启用全文搜索
我能够通过标签搜索并通过此查询获取网站列表
SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('search,searchengine,search,web' IN BOOLEAN MODE)
但我想按等级排列结果。我该怎么做
我也尝试过这个,但它提供了一些其他的东西
SELECT * FROM tags-table WHERE MATCH (tags) AGAINST ('search,searchengine,search,web' IN BOOLEAN MODE) ORDER BY ABS(rank)
按排名列中填写了各个站点的排名。例如,google
获得了排名1
,facebook
获得了rank2
,yahoo
获得了排名4
,与其他网站类似
tags-table
web | tags | rank
-----------------------------------------------------------------------------------
google.com |search,google,searchengine,engine,web | 1
facebook.com |facebook,social,networking,friends,community | 2
youtube.com |video,youtube,videos,entertainment,media | 3
yahoo.com |yahoo,search,email,news,searchengine | 4
没有神奇的列
rank
。但您可以这样计算相关性(或您称之为排名):
SELECT
*,
MATCH (tags) AGAINST ('search searchengine search web') AS relevance
FROM
tags-table
WHERE
MATCH (tags) AGAINST ('+search +searchengine +search +web' IN BOOLEAN MODE)
ORDER BY
relevance DESC
请注意,与匹配的第一个
不是在布尔模式下运行的。这是因为在布尔模式下几乎总是返回1。有一个秩列,该列中提到秩。例如,谷歌排名第一,facebook排名第二等等。。。