表中数据有
id content
1 cvs NT fads fsdafas ere
2 cvs abc sdfds NT dsfas BBs
3 cvs fdsfsdaf fdsafl fdsaf
4 fdasf fdasf f fsda fda
........更多数据省略
实现数据库功能.
以 CVS NT BBS 这三个字做关键字,搜索content这个字段.如果包含其中一个或者多个关键字就可以返回数据.(看起来很简单吧,用一个like '%CVS%' or like '%NT%' or like '%BBS%' ...就可以出来了.)现在开始难罗.要按照相关性排序.如果符合关键字的多少排序.例如字段包含CVS NT BBS就是匹配最高的.然后就是.CVS NT,CVS BBS,NT BBS,最后就是单个单词的匹配度最低CVS,NT,BBS如果用CVS NT BBS 将关键字搜索,那么经过相关性匹配的结果顺序就是2 cvs abc sdfds NT dsfas BBs --CVS,NT,BBS 1 cvs NT fads fsdafas ere --cvs,NT3 cvs fdsfsdaf fdsafl fdsaf --CVS可以看到是以content字段中符合最多关键字为排列顺序的.(这可是高难度挑战哦)我查了一些资料.在MySQL里可以用全文搜索的方法实现匹配度的高低排序.可是我没有试成功.所以特意贴这帖子一起讨论.本数据库选用Mysql
id content
1 cvs NT fads fsdafas ere
2 cvs abc sdfds NT dsfas BBs
3 cvs fdsfsdaf fdsafl fdsaf
4 fdasf fdasf f fsda fda
........更多数据省略
实现数据库功能.
以 CVS NT BBS 这三个字做关键字,搜索content这个字段.如果包含其中一个或者多个关键字就可以返回数据.(看起来很简单吧,用一个like '%CVS%' or like '%NT%' or like '%BBS%' ...就可以出来了.)现在开始难罗.要按照相关性排序.如果符合关键字的多少排序.例如字段包含CVS NT BBS就是匹配最高的.然后就是.CVS NT,CVS BBS,NT BBS,最后就是单个单词的匹配度最低CVS,NT,BBS如果用CVS NT BBS 将关键字搜索,那么经过相关性匹配的结果顺序就是2 cvs abc sdfds NT dsfas BBs --CVS,NT,BBS 1 cvs NT fads fsdafas ere --cvs,NT3 cvs fdsfsdaf fdsafl fdsaf --CVS可以看到是以content字段中符合最多关键字为排列顺序的.(这可是高难度挑战哦)我查了一些资料.在MySQL里可以用全文搜索的方法实现匹配度的高低排序.可是我没有试成功.所以特意贴这帖子一起讨论.本数据库选用Mysql
SELECT content FROM tablename WHERE MATCH(content) AGAINST('"CVS" "NT" "BBS"' IN BOOLEAN MODE)