gpt4 book ai didi

php - 跟踪趋势标签

转载 作者:行者123 更新时间:2023-11-29 01:59:55 25 4
gpt4 key购买 nike

我正在为我的微博网络应用程序添加“标签支持”。像 twitter、google+、facebook 和 co。我的应用程序用户可能会在他们的消息中添加主题标签。主题标签被转换为 html anchor ,指向列出所有相关消息的搜索页面。现在我还想显示“趋势标签”

消息与 user_id 和一些元数据一起保存在 MySQL 表 (InnoDB) 中。

我正在考虑以下处理趋势 HT 的方法:

  1. 从消息中提取主题标签;

    <?php
    preg_match_all( '/(#\w[\w\d]+)/', $message, $ht_matches );
    $hashtags = array_unique($ht_matches[1]);
    $hashtags_str = implode( ' ', $hashtags );
  2. 将它们保存在数据库记录中的单独行中(空格分隔的字符串);

    e.g. #SanFrancisco #Boeing777 #AirplaneAccident

    ---
    --- Table 'messages'
    ---
    +----+------------+--------------------------------------------+-----+
    | id | message | hashtag | ... |
    +----+------------+--------------------------------------------+-----+
    | 1 | ... | #SanFrancisco #Boeing777 #AirplaneAccident | ... |
    +----+------------+--------------------------------------------+-----+
  3. 如果不存在元数据,则将每个主题标签存储在单独的表中;

    --- 
    --- Table 'message_hashtags'
    ---
    +----+---------------------+------------+---------------------+---------------------+
    | id | hashtag | messages | created_at | updated_at |
    +----+---------------------+------------+---------------------+---------------------+
    | 1 | #SanFrancisco | 1465 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
    +----+---------------------+------------+---------------------+---------------------+
    | 2 | #Boeing777 | 294 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
    +----+---------------------+------------+---------------------+---------------------+
    | 3 | #AirplaneAccident | 1721 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
    +----+---------------------+------------+---------------------+---------------------+

    id int not null autoincrement
    hashtag char(20) not null
    messages int not null default 0
    created_at timestamp not null
    updated_at timestamp not null default '0000-00-00 00:00:00'
  4. 查询数据库以获取趋势标签,例如:

    SELECT id FROM message_hashtags WHERE messages > 1 ORDER_BY messages LIMIT 10


这都是理论上的。从长远来看,这种设置会表现良好吗?我担心可能会导致性能不佳和尴尬的瓶颈和存储问题。我不认为这是过早的优化,因为如果我现在不以正确的方式进行,我将需要在以后尽可能多地进行更改。

话题标签是一个热门话题,所以我假设你们中的一些人有处理 HT 和相关搜索的经验。

我乐于接受可能指向使用主题标签的另一个方向的建议和信息。

最佳答案

在主题标签和消息之间建立多对多关系可能是值得的。这包括再添加 2 个表:

  • hashtags - 包含字段 idhashtag(可能还有其他元数据),这将是所有现有主题标签的定义(并且会在用户创建新的时实时更新)
  • hashtags-messages - 包含字段 post_idhashtag_id,当用户创建带有主题标签的帖子时会更新。此表中的每个条目都是在帖子中找到的单个主题标签。

例如:

hashtags
--------
id | hashtag
---+--------
1 | php
2 | madara
3 | awesome

hashtags-messages
-----------------
post_id | hashtag_id
-----------+-----------
1 | 2
1 | 3
2 | 1
2 | 3

这意味着帖子 1 有标签 #madara#awesome,而帖子 2 有 #php#awesome

查询最流行的主题标签就像在按 hashtag_id 分组时查询计数一样简单。使用 JOIN,您可以获得有关主题标签本身的所有信息。

关于php - 跟踪趋势标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17576079/

25 4 0