1

当我设置$file_name_keyword为 Iron Man 3 时,它也会返回 Iron Man 2 结果,反之亦然,这甚至不是问题,但是如何让它先返回所有 Iron Man 3 条目,然后返回 Iron Man 2 ?请注意 ORDER BY votes - votes 设置为 0,现在所有条目都相同。

SELECT *,MATCH(file_name_keyword) AGAINST('$file_name_keyword')
FROM `uploaded`
WHERE (MATCH(file_name_keyword) AGAINST('$file_name_keyword')
       OR file_name_keyword REGEXP '.*($file_name_keyword).*')
AND active = '1'
ORDER BY `votes`

给我类似的东西

Iron.Man.2. Multi5.PAL.Nintendo.DS .By.Gamolama.torrent
Iron.Man.3.2013.720p.BluRay.x264.YIFY.mp4
Iron Man 2 Multi5 PAL Nintendo DS By Gamolama torrent
Iron Man 3 2013 720p BluRay x264 YIFY mp4
Iron Man 2 2010 1080p BDRip AAC x264-tomcat12 torrent
iron man 2 wallpaper-1920x1080 jpg

在此先感谢,这就是我最终的结果,不知道如何改进它。

表结构 [MyISAM]

id - int(11)
file_name - varchar(255) - server generated
file_size - int(11)
file_ext - varchar(255)
file_name_keyword - varchar(255) - user generated e.g. original file name
upload_datetime - datetime
votes - int(11)
active - int(1)
4

1 回答 1

0

首先需要注意的是,mySQL 中的全文搜索对字长很敏感。标识符 ie ft_min_word_len,任何低于此长度的单词长度都将被搜索索引忽略,因此不会出现在结果中。微调将帮助您解决这个最小值-最大值问题。

对于您的查询,您可以在下面尝试订购

SELECT *,MATCH(file_name_keyword) AGAINST('$file_name_keyword') as relevancy
FROM `uploaded`
WHERE MATCH(file_name_keyword) AGAINST('$file_name_keyword')
AND active = '1'
ORDER BY relevancy DESC, `votes` DESC

提示 有关全文的更多详细信息,请点击此处..

于 2013-08-20T14:01:01.470 回答