在不断更新数据库中维护排名顺序

时间:2014-01-05 18:04:43

标签: mysql database database-design search-engine code-search-engine

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

如何最好地实施和维护此排名顺序?

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

当然,将初始排序数设置为100,200,300,400等会留出一些空间来移动,但在某些时候它会断开。

另一种方法可以是将排名与一些固定的偏移量隔开,但在现实世界的情况下,它也可能会在某个时间内中断。

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

1 个答案:

答案 0 :(得分:0)

这个想法怎么样?像队列一样。

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

当要在主表中插入新行时,请执行以下操作:

  1. 禁止在man表中插入新行;
  2. Task表中插入新行。
  3. 运行例如每小时存储过程:

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

      2.1。在主表中运行增加(准备)等级(能够插入新的行等级值);

      2.2。在man表中插入新行;

      2.3。从Task删除行。

    3. 也许你需要在交易中做2.1-2.3项。