如何在 SQL 实现的倒排索引中搜索多个词?

How to search an inverted index implemented in SQL for multiple words?

我正在尝试为 SQL commnets 数据库制作一个搜索引擎。我在网上看到,最好的方法之一是制作倒排索引。

我的倒排索引的 table 如下。如果这不正确并且需要更改,请告诉我,这很容易完成。

您可以使用此设置相当轻松地找到单个单词,如下所示:

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

这给了你这个 table:

term   | frequency | body
-------+-----------+-------
reddit |        24 | etc..

但我想知道如何搜索多个词,以便返回结果的正文必须包含您搜索的所有词。请让我知道是否需要重新注册我的 table 以实现此目的。干杯。

预期输出

我期待这样的事情:

GET COMMENTS THAT HAVE 'pig', 'dog'


| comment      |
|--------------|
| that pig dog |
| ...pig...dog |

一般方法:

零! 你的 comment_terms table 应该有这些字段 (Id,CommentId, TermId )

首先 你已经得到了搜索查询的所有词。 例如,您有 dogid 为 1,pigid 为 2。

第二个 您在 comment_terms 中搜索同时具有 ID(1 和 2)并且在 comment_terms 中也有 2 条记录的评论 table(GROUP BY HAVING COUNT(commentId))