2013-10-02 124 views
2

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

P.S.用户可以输入搜索内容,如give me a file with math homeworks,或者只是math homeworks

回答

1

您正计划在数据库中使用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

相关问题