我正在索引两篇文章。一个是标题(单词),两个是关键字。为此,我选择使用 3 个表:
word_index (word,word_id) // al words and keywords are indexed
keyword_rel (word_id,postId) // relations with the keywords
word_rel (word_id,postId) // relations with the the words of the title
现在我正在尝试对此进行体面的搜索查询。仅使用关键字,它工作正常。
SELECT p.postId
FROM word_index wi
INNER JOIN keyword_rel kr ON wi.word_id=kr.word_id
INNER JOIN post p ON p.postId=kr.postId
WHERE wi.word LIKE 'input%'
GROUP BY p.postId
但现在我想word_rel
在标题中包括搜索。
我试过这个,但它听起来不正确,也没有返回所有内容(缺少一些 wi.word):
SELECT p.postId,wi.word
FROM word_index wi
INNER JOIN keyword_rel kr ON wi.word_id=kr.word_id
INNER JOIN word_rel wr ON wi.word_id = wr.word_id
INNER JOIN post p ON p.postId=kr.postId
INNER JOIN post pi ON pi.postId=wr.postId
WHERE wi.word LIKE 'input%'
GROUP BY p.postId
问题是与INNER JOIN post p
哪个有关keyword_rel
。现在我也需要它与 word_rel
. 什么是这样做的好方法?