假设我有文件列表。他们有元数据,例如 php、html、css
或 maths、homeworks
等标签。检索此类文件的最佳方法是什么? MATCH..AGAINST
或 LIKE('%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