我从 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'
OR 使第二个标记可选,因此我得到包含狗或猫的文档,但不包含狗和猫。 并且没有给我任何结果。
那么我该如何更改查询才能获得预期的结果?
它还应该接受 2 个以上的关键字。
最佳答案
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
关于mysql - 手动搜索倒排索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492957/