1

假设数据库表的每一行都包含有关搜索词的信息。该表有一个整数“排名”列来指示搜索项在网站上的显示顺序。

我如何最好地实施和维护这个排名顺序?

我要避免的问题是术语编号为 1,2,3,4,..,100,例如,当排名 50 突然变得有趣时,它会将其新排名设置为 1,然后它们之间的所有术语必须具有它们的排序数加一。

当然,将初始排序编号设置为 100、200、300、400 等会留下一些移动空间,但在某些时候它会中断。

另一种方法可以用一些固定的偏移量来间隔排列,但在现实世界的场景中它也可能会在某个时候中断。

那么有没有其他不同的方法来处理这个......(它可能与搜索引擎如何保持排名和重新排序有关,但我找不到任何运气)

4

1 回答 1

0

这个想法怎么样。比如排队。

创建附加表Task(id, new_rank, ...)。在插入时为主表创建触发器。

当新行即将插入主表时,请执行以下操作:

  1. 禁止在 man 表中插入新行;
  2. Task在表格中插入新行。

例如,每小时运行一次存储过程:

  1. Task从光标中的表中选择所有新行;
  2. 在循环中:

    2.1。在主表中运行增加(准备)排名(以便能够插入新的行排名值);

    2.2. 在 man 表中插入新行;

    2.3. 从 中删除行Task

也许你需要在事务中做 2.1-2.3 项。

于 2014-01-21T10:57:20.990 回答