SQLite查找包含单词的所有文档

时间:2014-08-06 03:58:04

标签: sql sqlite set

我有一个SQLite数据库,其中包含一个用于文档的表,一个用于表示唯一单词的表(带有和删除常用单词)以及一个表格,用于指示在哪些文档中使用哪些单词:

CREATE TABLE Docs ( DocId INTEGER PRIMARY KEY, DocName TEXT )
CREATE TABLE Words ( WordId INTEGER PRIMARY KEY, Word TEXT )
CREATE TABLE WordsInDoc ( WordsInDocId INTEGER PRIMARY KEY,
                          DocId INT REFERENCES Docs(DocId),
                          WordId INT REFERENCES Words(WordId)
                        )

我正在尝试编写一个带有单词列表的查询(如上所述),并返回包含所有单词的所有文档的DocIds。

感觉就像我应该能够使用SQLite的设置操作那样,但我无法完全了解SQL。我当然可以在应用程序层中完成它,但它似乎不是正确的设计。

有人可以在这推荐正确的方法吗?

2 个答案:

答案 0 :(得分:1)

搜索包含某些这些字词的文档,然后计算每个文档出现的字数:

SELECT DocId
FROM WordsInDoc
WHERE WordId IN (17, 23, 37, 42, 69, 105, 666)
GROUP BY DocId
HAVING COUNT(*) = 7

答案 1 :(得分:0)

select D.docID, D.docName from Docs D join wordsInDoc WID on
D.docID = WID.docID
inner join WORDS w
on w.wordId = wid.wordID

Fiddle 此处..