0

我从 2 个表中的文档创建了一个倒排索引:

  • index_token(token_id,token)
  • index_documents(doc_id,token_id,storage_document_id)

现在我想选择在同一个 storage_document 中出现“cat”和“dog”这两个词的文档。

我的尝试是:

SELECT * FROM index_token INNER JOIN index_documents ON index_token.token_id = index_documents.token_id WHERE index_token.token = 'cat' OR/AND index_token.token = 'dog'

或者使第二个令牌可选,所以我得到的文件有狗或猫,但没有狗和猫。并且没有给我任何结果。

那么我必须如何更改查询才能获得预期的结果?

它还应该接受超过 2 个关键字。

4

1 回答 1

1
SELECT dog_docs.doc_id from
(
SELECT index_documents.doc_id 
FROM index_documents 
INNER JOIN index_token
ON index_token.token_id = index_documents.token_id
WHERE index_token.token = 'cat'
) cat_docs
INNER JOIN
(
SELECT index_documents.doc_id 
FROM index_documents 
INNER JOIN index_token
ON index_token.token_id = index_documents.token_id
WHERE index_token.token = 'dog'
) dog_docs
ON cat_docs.doc_id = dog_docs.doc_id
于 2013-07-05T16:19:08.553 回答