0

这在某种程度上是一个悬而未决的问题,但是我询问的主要原因是要么知道此类任务的“名称”,要么指向我应该寻找的正确方向。

我想要实现的是一个可以标记的项目数据库。文本字符串的格式。

例如,如果我们在谈论电影。

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

...等等。这张桌子会很大。

当用户访问该站点时,他们可以搜索一个词或一串文本。例如:

男孩得到女孩

我想知道该怎么做,或者叫什么是在数据库中搜索:

男孩”、“得到”、“女孩”、“男孩得到”、“得到女孩”、“男孩得到女孩”、“男孩得到女孩””。

这可以自动完成吗?有这个功能吗?

4

1 回答 1

2

您的问题实际上分为两个部分:

在数据库中搜索任意文本

其名称为“模式匹配”,在 SQL 中以多种方式实现:

在这三个中,最后一个可能是最强大的。你可以轻松地做你想做的事:

SELECT * FROM table_tags WHERE MATCH(tag_text) AGAINST('boy gets girl');

最好的部分?行按相关性的顺序返回

根据标签获取电影

我会假设因为您正在使用这个双表模型,所以您已经知道如何进行连接,但以防万一这里有适合您的资源。获得标签 ID 后,您可以轻松获取电影 ID,并从那里获取电影实体本身。

于 2013-10-05T06:26:11.030 回答