这有点是一个悬而未决的问题,但我要问的主要原因是要么知道这个任务的“名称”,要么指出我应该寻找的正确方向。
我想要实现的是一个可以标记的项目数据库。格式为文本字符串的格式。
例如,如果我们谈论的是电影。
table_movies
movie_id
movie_title
movie_genre
table_tags
tag_id
movie_id
tag_text
电影只会在其各自的表格中输入一次。在table_tags
表中,movie_id
可以无限次列出,每个标记一个。
table_movies
movie_id movie_title movie_genre
1 Notting Hill Romantic Comedy
2 Jurassic Park Science Fiction, Action Adventure
3 Grease Musical
4 Salt Action Adventure
5 Gladiator Drama, Epic, Historical, Adventure, Action
6 E.T. Science Fiction, Action Adventure, Fantasy
table_tags
tag_id movie_id tag_text
1 1 Notting
2 1 Hill
3 1 London
4 1 Market
5 2 Jurassic
6 2 Park
7 2 90s
8 2 T-Rex
9 2 Amber
10 2 Egg
11 3 Grease
12 3 Cars
13 3 Diner
14 4 Salt
15 4 Undercover
16 4 Twist
17 4 Agent
18 5 Gladiator
19 5 Shield
20 5 Roman
21 1 Boy gets girl
22 3 Varsity
23 3 Rock & Roll
24 5 Honour
25 5 Arena
26 6 E.T.
27 6 boy
28 6 alien
29 6 phone home
30 7 Home
31 7 Alone
32 7 robbers
33 7 boy
......等等。这张桌子很大。
当用户访问该网站时,他们可以搜索一个字或一串文字。例如:
“男孩得到女孩”
我想知道该怎么做,或者它叫什么是搜索数据库:
“男孩”,“获取”,“女孩”,“男孩获取”,“< em>得到女孩“,”男孩女孩“,”男孩得到女孩“。
这可以自动完成吗?这有功能吗?
答案 0 :(得分:2)
您的问题实际上分为两部分:
这个名称是“模式匹配”,在SQL中它以多种方式实现:
在这三个中,最后一个可能是最强大的。您可以轻松地完成您想要的任务:
SELECT * FROM table_tags WHERE MATCH(tag_text) AGAINST('boy gets girl');
最好的部分? 以相关性的顺序返回行。
我会假设你正在使用这个双表模型,你已经知道如何进行连接,但以防这里a resource为你。获得标签ID后,您可以轻松获取电影ID,并从那里获取电影实体本身。