我有这张桌子: ID,bookmarkID,标签识别 我想获取给定标签列表的前N个bookmarkID。 有谁知道这个非常快的解决方案?表格相当大(1200万条记录) 我正在使用MySql
答案 0 :(得分:1)
试试这个:
SELECT *
FROM myTable
WHERE FIND_IN_SET(tagID,itagID)
ORDER BY bookmarkID ASC
LIMIT n;
答案 1 :(得分:0)
这实际上取决于如何构建标记数据的关系标记。理想情况下,每个标签都映射到一个或多个书签,这些书签基本上是书签标签的巨大反向索引。如果是这种情况,您可以获取将标记映射到书签的所有行,并从中应用基础评分函数。
您可以将其基于lucene scoring algorithm,其中包括整个语料库中标签的使用/传播,给定书签的标签密度以及基于书签时的某种归一化因子。
答案 2 :(得分:0)
我主要在MSSQL中运行,但我觉得有些事情应该适合你:
SELECT bookmarkID
FROM myTable
WHERE tagID in ('tag1,tag2,tag3')
ORDER BY bookmarkID ASC
LIMIT 0,n
我可能错了,请让我知道:)。