【发布时间】:2016-01-26 15:06:18
【问题描述】:
我正在尝试为 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 |
【问题讨论】:
-
标记使用的 dbms,因为这不在 ANSI/ISO SQL 标准中。
-
你在找
sql full text search -
jarlh - 我列出的 SQL 的哪一部分不是标准的一部分?
-
你能发布一个预期输出的样本吗?
-
对于多个术语,我会使用类似联合功能的东西 IF 我别无选择在其他地方做。所以我在这里会有点烦人,问你为什么要尝试在 SQL 中发明一个搜索功能,当很多存在在 SQL 之外执行得更好的时候,比如 Lucene?您尝试做的事情将开始变得越来越糟糕,因为您的搜索数据越多越复杂。只是一个想法,您的时间可能会更好地花在完全不同的方法上。
标签: sql inverted-index