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

标签 php mysql ruby-on-rails machine-learning search-engine

<分区>

假设我有文件列表。他们有元数据,例如 php、html、cssmaths、homeworks 等标签。检索此类文件的最佳方法是什么? MATCH..AGAINSTLIKE('%user_post_tag%') 是唯一的解决方案吗?是否有任何机器学习技术可以在这里应用,所以如果用户经常打开同一个文件,它会在搜索完成后排名更好并位于列表的顶部?如果我们有一个文件存储网站,最重要的是要有一个好的搜索,应该如何搜索(有什么流行的技术吗?)?

附言用户会在搜索中输入类似give me a file with math homeworks,或者可能只是math homeworks

最佳答案

您打算在数据库中使用 CSV。
这总是一个坏主意。

使用这样的标签表:

Table tag
  id primary key integer auto_increment
  tag char(10) unique key

用n对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 本身使用的方法。

参见:https://meta.stackexchange.com/a/2678/161093

关于php - 使用元数据存储和检索文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144580/

相关文章:

html - 无法在 Rails 4.0.8 中将邮件内容呈现为 html/文本格式

php - 忽略 MYSQL 查询中的空值

php - DOMElement 似乎没有从 DOMNodeList 中删除

php - 带日期的 MySQL 错误

php - 是否可以通过执行查询导出 MySQL 数据库?

ruby-on-rails - 将新设计集成到旧的 Rails 应用程序中

PHP 自动完成与 Oracle 错误

php - 如何通过jquery将 'multipart/form-data'(图片、pdf等)保存到mysql数据库mediumblob?

MySQL "Distinct"加入超慢

ruby-on-rails - 如何避免“无法使用 Axlsx gem 分配内存(NoMemory 错误)?