重用关键字进行搜索

时间:2012-06-06 15:41:12

标签: php mysql

我必须制作一个搜索功能,用户搜索附加到不同文章的标签,例如:PC,健康,时装......等。 我目前的表是这样的:

Tag_id  | Tag            | Article_id
-----------------------------------
1       | scary          |   2
-----------------------------------
2       | daunting       |   2
-----------------------------------
3       | chilling       |   2
-----------------------------------
4       | creepy         |   2
-----------------------------------
5       | scary          |   5
-----------------------------------
6       | daunting       |   5
-----------------------------------
7       | chilling       |   5
-----------------------------------
8       | creepy         |   5

正如您所看到的,每个标签都有同义词,必须在每个共享相同标签的文章中重复这些同义词。我的问题是:什么表结构允许重复使用标签(没有重复的标签),同时不能搜索友好。 (不能使用正常的词库,因为标签是短语和俚语)

2 个答案:

答案 0 :(得分:1)

你想要三张桌子:

ARTICLE
id   (a primary uid)
link (links to the article)

TAG
id   (a primary uid)
name (ie 'chilling')

ARTICLETAG
article (a foreign key: a uid that exists in ARTICLE)
tag     (a foreign key: a uid that exists in TAG)

每次要标记文章时,都会在ARTICLETAG中插入一个新行,其中包含您要标记的文章以及要标记它的标记的ID。根据需要为新文章和标签添加到TAGARTICLE

答案 1 :(得分:0)

文章表

  

-id - UNIQUE(自动增量与否,您决定)

     

- 更多属性......

TAGS TABLE

  

-id - UNIQUE(自动增量与否,您决定)

     

-tag

关系表 ARTICLE_TAG表

  

-article_id

     

-tag_id

您可以将任意数量的标签与您想要的文章相关联