Mysql的SELECT语句

时间:2010-05-13 23:47:12

标签: sql mysql

我有这张桌子: ID,bookmarkID,标签识别 我想获取给定标签列表的前N个bookmarkID。 有谁知道这个非常快的解决方案?表格相当大(1200万条记录) 我正在使用MySql

3 个答案:

答案 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

我可能错了,请让我知道:)。