我正在尝试为commnets的SQL数据库创建一个搜索引擎。我在网上看到,这样做的最好方法之一就是制作倒排索引。
我的倒排索引表如下。如果这不正确并且需要更改,请告诉我,这可以轻松完成。
您可以使用此设置轻松找到单个单词,如下所示:
SELECT comment_terms.term, comment_terms.frequency, comments.body FROM comment_terms
INNER JOIN comments ON comment_terms.comment_name = comments.name
WHERE comment_terms.term = 'reddit'
ORDER BY frequency DESC
这给你这张表:
term | frequency | body
-------+-----------+-------
reddit | 24 | etc..
但我想知道如何搜索多个术语,以便返回结果的正文必须包含您搜索的所有单词。如果我需要重新调整表格以便实现这一点,请告诉我。欢呼声。
我期待的是:
GET COMMENTS THAT HAVE 'pig', 'dog'
| comment |
|--------------|
| that pig dog |
| ...pig...dog |
答案 0 :(得分:2)
一般方法:
归零!您的comment_terms
表格应包含以下字段(Id
,CommentId
,TermId
)
首先您已获得搜索查询的所有字词。
例如,dog
的{{1}}为1,id
的{{1}}为pig
。
第二次您在id
中搜索同时具有Id(1和2)且在comment_terms
表(comment_terms
)中还有2条记录的评论< / p>