【发布时间】:2013-05-17 20:42:45
【问题描述】:
我有一个带有架构的文档表:
CREATE TABLE Frequency (
docid VARCHAR(255),
term VARCHAR(255),
count int,
PRIMARY KEY(docid, term));
要查找我将使用的所有文档的相似度原始分数:
SELECT a.term, b.term, sum(a.count * b.count)
FROM Frequency a, Frequency b
Where a.term = b.term
我不确定为什么会这样,但它确实在测试数据上做了 D*DT,其中 DT 是 D 的转置。
我现在需要计算诸如“国会枪法”之类的术语的查询/文本字符串相似度
我相信这涉及联合和分组,但我所有的查询尝试都失败了,例如:
SELECT *
FROM Frequency a, Frequency b, Frequency c
Where a.term = b.term
UNION
SELECT a.docid, 'congress' as term, 1 as count
UNION
SELECT b.docid , 'gun' as term, 1 as count
UNION
SELECT c.docid , 'laws' as term, 1 as count
Group by docid;
我是这种 SQL 的新手,希望能在我试图理解的过程中进行叙述 我也在做什么。
请解释为什么第一个查询有效以及如何处理第二个查询。
【问题讨论】:
-
这种情况下“相似度”如何定义?
-
计数列列出了一个术语单个术语的并发数,例如“congress”。
-
所以对于一个术语来说,这将是 doument
-
我需要对一串术语“congress+ gun +laws”进行相似性分析,并希望确定这些术语的原始计数,例如输出行:of docid "A term Congress term gun term law count 5 5
-
没有人知道你想要什么。显示一些示例记录和所需的结果。
标签: sql sqlite similarity keyword-search