搜索及排序问题....
比如我搜索关键字 "中国人";
可以查出所有包含"中国人",包含"中",包含"国",包含"人"的记录.
数据库中查询出五条符合记录的数据.按以下次序排出来....
就是类似baidu和google的搜索和排序
1.中国人民站起来
2.站在中间的那个美国人出来一下
3.关系还在发展中
4.我们的祖国真伟大
5.人们在扫雪
请问这样该如何拆分关键字,如何排序....谁能给个拆分代码及SQL句子
问题点数:30、回复次数:11Top
1 楼it_zl(如影随行)回复于 2006-03-16 14:46:36 得分 0
没人回答吗?Top
2 楼aniude(重返荣耀)回复于 2006-03-16 16:28:08 得分 1
Mark下,希望有人分析好的思路,,,,,,,Top
3 楼zeroleonhart(Strong Point:Algorithm)回复于 2006-03-16 22:43:28 得分 3
这个貌似搜索引擎的核心技术。。。。
我觉得应该是多个排序的sql语句,然后用union将结果合并到一个记录集Top
4 楼faisun(暖阳)回复于 2006-03-16 22:57:57 得分 1
同 markTop
5 楼it_zl(如影随行)回复于 2006-03-20 09:01:36 得分 0
顶一下.Top
6 楼helloyou0(你好!)回复于 2006-03-20 12:28:37 得分 9
这个好像挺复杂的。不知道google他们如何做。
设想:
首先分词
有各种分解可能,给对应的分解出的词加上一个权值,
根据搜索结果根据对应权值,算出一个优先值来,根据这个值排序。
比如:
中国人 (没切割,自然权值最高) 权--100
中国 -50 人 10
中 -10 国人 40
中- 10 国 -10 -- 人 -10
1.中国人民站起来 100
2.站在中间的那个美国人出来一下 10 + 40 = 50
3.关系还在发展中 10
4.我们的祖国真伟大 10
5.人们在扫雪 10
这样大致排序,词的权值根据词的长度和词的使用程度定。
比如认为“中国”比“国人”高,因为“中国”更常见。
大概想法,欢迎进一步讨论
Top
7 楼helloyou0(你好!)回复于 2006-03-20 12:31:37 得分 0
权值可以固定,也可以动态调整。
比如最近“李宇春”的查询增多,可以加大该词的权值,以便满足近期查询的需要,
如果查询减少了,再动态调低Top
8 楼aniude(重返荣耀)回复于 2006-03-20 13:03:35 得分 1
不错不错,学习Top
9 楼lightninga()回复于 2006-03-20 14:23:28 得分 1
不错`Top
10 楼sjdyr(做一条真正的专线!)回复于 2006-03-20 15:00:48 得分 1
mark!!Top
11 楼dcr333(QiLon.Com)回复于 2006-03-21 09:40:17 得分 13
学习Top




