高手请进,搜索的算法!

时间:2020-11-30 11:26:48
客户要求做一个搜索系统,搜索结果的显示排序问题很麻烦,不是简单的按照数据库的某个字段排序,而是按照一定的原则排序,(比如:信息的级别,浏览次数,符合程度等等原则加分.这个分数可以算出来,但是要查询的表中没有这个分数的字段.),这样的话,排序就要用另外的方法,我采用冒泡排序的话,可是分页的时候就不好了,结果超过500条记录的时候就很慢了.
请教高手提供个思路或者算法.

13 个解决方案

#1


直接用order by不可以么?

#2


排序的原则不在这个表中,要要根据其他的表计算才能得出来哪个在前面,哪个在后面.

#3


那就用一个连接查询把其他表带上一起查,然后排序,数据库本身会为排序优化的,而且肯定不会500条就很慢了。

#4


用存储过程

#5


满足查询条件的记录,要经过复杂的运算才能算出这条记录的分数,然后再根据这个分数排序,这样怎么把其他的表一起带上呀.

#6


首先,已经不能按照数据库的输出排序了,我把要显示的内容存入数组,然后冒泡排序,然后显示排序后的数组,这样速度就慢了,
有没有高手呀....................

#7


关注

#8


范例:
tableA
col1 col2 col3
姓名 分数 班级

select col1,max(col2),col3
from tablA
group by col3,col1

如果一个sql语句不能达到要求的结果集,应用存储过程--》生成临时表--》程序读临时表的方法来获取

#9


存储过程吧快很多的~~

#10


也可以建立一个临时表。

#11


有没有高手呀.
是这样的:
比如我的搜索结果有100条记录,这些记录的排序依靠一个分数,这个分数经过很复杂的运算得出.而表中没有分数这个字段,(即使有也没用).现在就是用什么方法排序.
举例:
信息------分数(不是数据库中的字段,经过计算后得出的)
信息1......90
信息2..........89
信息3..........102
.................
信息100.........96.3

这样,如何排序.....................

#12


尽管没帮上什么忙...

#13


用存储过程

#1


直接用order by不可以么?

#2


排序的原则不在这个表中,要要根据其他的表计算才能得出来哪个在前面,哪个在后面.

#3


那就用一个连接查询把其他表带上一起查,然后排序,数据库本身会为排序优化的,而且肯定不会500条就很慢了。

#4


用存储过程

#5


满足查询条件的记录,要经过复杂的运算才能算出这条记录的分数,然后再根据这个分数排序,这样怎么把其他的表一起带上呀.

#6


首先,已经不能按照数据库的输出排序了,我把要显示的内容存入数组,然后冒泡排序,然后显示排序后的数组,这样速度就慢了,
有没有高手呀....................

#7


关注

#8


范例:
tableA
col1 col2 col3
姓名 分数 班级

select col1,max(col2),col3
from tablA
group by col3,col1

如果一个sql语句不能达到要求的结果集,应用存储过程--》生成临时表--》程序读临时表的方法来获取

#9


存储过程吧快很多的~~

#10


也可以建立一个临时表。

#11


有没有高手呀.
是这样的:
比如我的搜索结果有100条记录,这些记录的排序依靠一个分数,这个分数经过很复杂的运算得出.而表中没有分数这个字段,(即使有也没用).现在就是用什么方法排序.
举例:
信息------分数(不是数据库中的字段,经过计算后得出的)
信息1......90
信息2..........89
信息3..........102
.................
信息100.........96.3

这样,如何排序.....................

#12


尽管没帮上什么忙...

#13


用存储过程