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

如何在SQL中实现的倒排索引中搜索多个单词?,sql,inverted-index,Sql,Inverted Index,我正在尝试为commnets的SQL数据库创建一个搜索引擎。我在网上读到这样做的最好方法之一是制作一个反向索引 我的倒排索引表如下所示。请让我知道,如果这是不正确的,需要改变,这可以很容易地做到 使用此设置,您可以非常轻松地找到单个单词,如下所示: SELECT comment_terms.term, comment_terms.frequency, comments.body FROM comment_terms INNER JOIN comments ON comment_term

我正在尝试为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 |
一般做法:

您的
comment\u术语表应包含以下字段(
Id
CommentId
TermId

首先您已获得搜索查询的所有单词。 例如,您有
id为1的
dog
id为2的
pig


Second您在
comment\u terms
中搜索同时具有Id(1和2)且在
comment\u terms
表中也具有2条记录的注释(
通过使用COUNT(commentId)
对其进行分组)

标记dbms,由于ANSI/ISO SQL标准没有涵盖这一点。您正在寻找
SQL全文搜索
jarlh-我列出的SQL的哪一部分不是标准的一部分?您可以发布预期输出的示例吗?对于多个术语,如果我没有其他选择,我会使用类似union的功能。所以我在这里会有点恼人,问你为什么要尝试在SQL中发明一个搜索函数,而在SQL之外有很多搜索函数可以更好地执行,比如Lucene?数据越多,搜索越复杂,您尝试做的事情将开始变得越来越糟糕。只是想让你的时间花在完全不同的方法上会更好。