如何在SQL中实现的倒排索引中搜索多个单词?
我正在尝试为commnets的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
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?数据越多,搜索越复杂,您尝试做的事情将开始变得越来越糟糕。只是想让你的时间花在完全不同的方法上会更好。