如何在SQL中为多个单词搜索反向索引?

时间:2016-01-26 15:06:19

标签: sql inverted-index

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

我的倒排索引表如下。如果这不正确并且需要更改,请告诉我,这可以轻松完成。

enter image description here

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

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 |

1 个答案:

答案 0 :(得分:2)

一般方法:

归零!您的comment_terms表格应包含以下字段(IdCommentIdTermId

首先您已获得搜索查询的所有字词。 例如,dog的{​​{1}}为1,id的{​​{1}}为pig

第二次您在id中搜索同时具有Id(1和2)且在comment_terms表(comment_terms)中还有2条记录的评论< / p>