2013-07-05 92 views
0

I 2個表內創建從文檔的倒排索引:手動搜索倒排索引

  • index_token(token_id,令牌)
  • index_documents(DOC_ID,token_id,storage_document_id)

現在我想要選擇單詞'cat'和'dog'出現在同一個storage_document中的文檔。

我的嘗試是:

SELECT * FROM index_token INNER JOIN index_documents ON index_token.token_id = index_documents.token_id WHERE index_token.token = '貓' 或/與 index_token.token = '狗'

或使第二令牌可選,所以我得到的文件有狗或貓,但不是狗和貓。 並沒有給我結果。

那麼,我該如何改變查詢來獲得預期的結果呢?

它也應該接受超過2個關鍵字。

回答

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 
+0

是它進入了正確的方向,但是這必須是在常見的是storage_document_id文檔參考,DOC_ID只是index_documents – pila

+0

的主鍵,但我不知道是否有一個更可擴展的解決方案嗎?所以我必須爲每個附加關鍵字添加一個全新的INNER JOIN塊...不是很好,但我認爲它可以工作 – pila