日期:2014-05-18  浏览次数:20783 次

分词搜索排序算法
请教,如何将分词搜索后的结果排序?就像谷歌那样,结果完全匹配关键字的排最前面,不完全匹配的,就区配分词结果。例:我输入:中华人民共和国
用分词程序处理后,再加上程序对字符串的处理,最终生成sql语句为:where contains((title,keyword,description),'"中华人民共和国" or "中华" or "人民" or "共和国"')
如果这时候数据库中有这么几条数据:
1、中华人民共和国成立了。
2、中华人民从此站起来了。
3、我们都有一个家,名字叫中华。
4、中国人民都笑了。
5、中华,中华,我的名字叫中华
很显然,第一条要排在最前面,因为输入的关键字跟他完全匹配。2345这里面都含“中华”二字,但是第五条里面有三个“中华”,出现的次数最高,因此,应该排在第二,第二条含“中华” 和“人民”两个词,比第五个少,但比其它的多,因此排第三,依次类推,请问如何实现这种排序。

------解决方案--------------------
楼主你的头像和MOP农村痴汉签名有神韵上的交叉点
------解决方案--------------------
问google吧 我也想知道这答案
------解决方案--------------------
difference():
格式:difference(字符串1,字符串2) 
功能:检查字符串1与字符串2是否匹配,返回0-4的整数,0最不匹配,4最匹配
示例:SELECT difference(‘hello’,’HELLO’)
数据库中的方法
你循环出数据库中的数据 再用这个方法处理我想能行吧
------解决方案--------------------
可以简单加权,比如,匹配一个是10分,那么2个就是20分

不过现在都是交钱就能排前面