gpt4 book ai didi

MySQL - 制作一个(简单的?)带有标签的搜索引擎

转载 作者:行者123 更新时间:2023-11-29 00:42:48 24 4
gpt4 key购买 nike

我要为我们 future 的网站制作一个(简单的?)搜索引擎,我想就一个问题征求一些建议。

网站上的内容会有与之关联的标签,但我不知道如何以正确的方式存储它们。为简单起见,1 个标题带有多个标签。我有两个解决方案,我想从你那里知道哪个更好,或者说另一个解决方案;)

  1. 在一张表中存储标题,在另一张表中存储标签。每个标签都有一个 titleId。当用户搜索某物时,数据库会在两个表中搜索并同时返回结果。 + 要存储的数据更少。 - 在多个表中搜索<​​/p>

  2. 在一张表中存储标题,在另一张表中存储标签。尽管每个标题都有一个与标题同名的标签。这样,数据库只需要在一个表中搜索。

    • 只需在一张表中搜索。 - 要存储更多数据。

我说“性能就是一切”,但您怎么看?

最佳答案

您要做的是使用多对多关系。可行的方法是使用连接表。这是我的设置方式

create table page (
id int(11) not null auto_increment,
title varchar(128)
...
) engine = innodb;

create table tag (
id int(11) not null auto_increment,
tag_name varchar(128)
) engine = innodb;

create table page_tag (
id int(11) not null auto_increment,
tag_id int(11) not null,
page_id int(11) not null,
foreign key(tag_id) references tag(id),
foreign key(page_id) references page(id),
unique key(tag_id, page_id)
) engine=innodb;

确保为这些使用 innodb 表以强制引用完整性。如果您需要全文搜索,请添加一个基本上复制标签表的附加 myISAM 表。 page_tag 中的唯一键可防止其中出现重复条目​​,并使该表的连接更快。

我还要说你应该选择#2。这样你每次都在搜索一张 table ,这可能更容易处理。

关于MySQL - 制作一个(简单的?)带有标签的搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11531377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com