0

所以,看看我有什么。

短文本消息,以纯文本、标记文本和 html 形式存储在数据库中。对于带标签的文本,标签被嵌入到每条消息中。例如,我可以有以下标记的消息:

A [quick] [brown] fox jumps over a [lazy] dog.

Quick、Brown 和 Lazy - 是嵌入标签,在 html中以粗体显示。任何用户都可以标记另一个标签,例如 [dog]。发生这种情况,我需要用一个词狗刷新数据库中的所有消息,并使其成为一个到处都是标签。

有数千条消息,所以我需要过滤必要的消息并更新它们(或插入新值),别管用户可能会同时更改标签(并删除它们)。我正在为这些需求考虑一个辅助表,以保留搜索索引之类的内容并查找要快速更新的消息。当然,所有更改都是在其他几个用户批准后应用的,只是为了保持订单。

是否有任何想法可以使搜索和更新过程更有效,或者我应该在这里选择其他东西?

如果重要的话,我会使用 Ruby+MySQL。

4

1 回答 1

0

如果您绝对必须更新每条消息,那么除了蛮力更改它们之外,您别无选择。如果只有几千,那么它会足够快。但是,如果它增长到数百万,那么在每条消息中定位标签的时间可能会开始影响,除非您使用查询优化和/或使用后台更新线程玩游戏,正如您所暗示的那样。(或更改为具有日志支持的时态数据库)

如果标签的数量足够少,为什么不简单地在表中维护标签列表,并在检索每条消息时通过标签表传递每个潜在标签(即,对于消息中的每个单词,检查单词是否在标签表中) . 如果消息很短,这将相当快,并且可以对标签表进行最佳索引以提供帮助。

标签表的一个优点是您可以创建一个消息标签 1:M 表作为反向索引,这将加快查询搜索,尽管您的问题似乎与搜索性能无关。

于 2012-05-30T03:07:51.117 回答