在数据库中搜索文本字符串,可能是标签

时间:2013-10-04 18:02:12

标签: mysql string search tags full-text-search

这有点是一个悬而未决的问题,但我要问的主要原因是要么知道这个任务的“名称”,要么指出我应该寻找的正确方向。

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

例如,如果我们谈论的是电影。

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>得到女孩“,”男孩女孩“,”男孩得到女孩“。

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

1 个答案:

答案 0 :(得分:2)

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

在数据库中搜索任意文本

这个名称是“模式匹配”,在SQL中它以多种方式实现:

在这三个中,最后一个可能是最强大的。您可以轻松地完成您想要的任务:

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

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

根据标签获取电影

我会假设你正在使用这个双表模型,你已经知道如何进行连接,但以防这里a resource为你。获得标签ID后,您可以轻松获取电影ID,并从那里获取电影实体本身。