手动搜索倒排索引

时间:2013-07-05 16:04:44

标签: mysql search inverted-index

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

  • index_token(token_id,令牌)
  • 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个以上的关键字。

1 个答案:

答案 0 :(得分: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