【发布时间】:2013-07-24 18:37:25
【问题描述】:
我正在尝试创建一个可以搜索的相对简单的分层标记系统。这是它现在的工作方式,这是 MySQL 表结构:
--------------------------------------------
id | tag | parentID | topParentID |
--------------------------------------------
1 | Boston | NULL | NULL |
--------------------------------------------
2 | Events | 1 | 1 |
--------------------------------------------
3 | June 30th | 2 | 1 |
--------------------------------------------
4 | NYC | NULL | NULL |
--------------------------------------------
5 | Attractions | 4 | 4 |
--------------------------------------------
因此,如果用户在搜索栏中输入波士顿,他们将收到建议“波士顿活动”和“波士顿活动 6 月 30 日”。同样,如果他们在搜索栏中输入 NYC,他们将收到“NYC Attractions”作为建议。
此外,如果有人在搜索栏中输入“事件”,他们会收到“波士顿事件”的建议,或者如果他们输入 6 月 30 日,他们会收到“波士顿事件 6 月 30 日”的建议
我弄乱了代码来执行此操作,我绝对可以将查询字符串分解为关键字,然后在标签表中搜索每个关键字并返回匹配项,但我还没有找到返回完整的正确方法以我上面提到的格式标记字符串。
【问题讨论】:
-
为什么事件的 parentID=topParentID?我认为,对于 2 级元素,topParentID 必须为 NULL。
-
@user4035 我想无论哪种方式都是可能的。我不完全确定 topParentID 是否完全必要。无论如何,我试图回答比这更大的问题。