Php 使用元数据存储和检索文件的最佳方法

Php 使用元数据存储和检索文件的最佳方法,php,mysql,ruby-on-rails,machine-learning,search-engine,Php,Mysql,Ruby On Rails,Machine Learning,Search Engine,假设我有文件清单。它们有元数据,例如php、html、css或数学、家庭作业等标签。检索此类文件的最佳方式是什么?MATCH..from或LIKE('%user\u post\u tag%')是唯一的解决方案吗?是否有任何机器学习技术可以应用于此,因此,如果用户经常打开同一个文件,它的排名会更好,并且在搜索完成后位于列表的顶部?如果我们有一个文件存储网站,最重要的是有一个好的搜索,那么搜索应该如何进行(有什么流行的技术吗?) 另外,用户会在搜索中键入类似“给我一个包含数学作业的文件”,或者可能只

假设我有文件清单。它们有元数据,例如
php、html、css
数学、家庭作业等标签。检索此类文件的最佳方式是什么?
MATCH..from
LIKE('%user\u post\u tag%')
是唯一的解决方案吗?是否有任何机器学习技术可以应用于此,因此,如果用户经常打开同一个文件,它的排名会更好,并且在搜索完成后位于列表的顶部?如果我们有一个文件存储网站,最重要的是有一个好的搜索,那么搜索应该如何进行(有什么流行的技术吗?)


另外,用户会在搜索中键入类似“给我一个包含数学作业的文件”
,或者可能只是“数学作业”,您计划在数据库中使用CSV。
这总是个坏主意

使用如下所示的标记表:

Table tag
  id primary key integer auto_increment
  tag char(10) unique key
使用n-to-n链接表

Table tag_link
  tag_id integer
  article_id integer
  primary key (article_id, tag_id)
然后你有一个主题表

Table article
  id integer primary key auto_increment
  .....
现在,您可以使用以下查询查找所有带有标记的文章:

SELECT a.id, a.header, a.body 
FROM tag t
INNER JOIN tag_link tl ON (t.id = tl.tag_id)
INNER JOIN article a ON (a.id = tl.tag_id)
WHERE t.tag = 'search-engine'
这是最快的方法,事实上这也是stackoverflow本身使用的方法

见: