【问题标题】:Finding similar posts with PostgreSQL使用 PostgreSQL 查找类似的帖子
【发布时间】:2013-07-24 18:37:57
【问题描述】:

我有一张桌子posts

CREATE TABLE posts (
  id serial primary key,
  content text
);

当用户提交帖子时,我如何将他的帖子与其他帖子进行比较并找到相似的帖子?
我正在寻找类似 StackOverflow 对“类似问题”所做的事情。

【问题讨论】:

    标签: postgresql search pattern-matching


    【解决方案1】:

    虽然Text Search 是一个选项,但它主要不适用于此类搜索。典型的用例是根据字典和词干在文档中查找单词,而不是比较整个文档。

    我确信 StackOverflow 已经在相似性搜索中加入了一些聪明才智,因为这不是一件小事

    使用pg_trgm 模块提供的similarity function and operators,您可以中途获得不错的结果:

    SELECT content, similarity(content, 'grand new title asking foo') AS sim_score
    FROM   posts
    WHERE  content  % 'grand new title asking foo'
    ORDER  BY 2 DESC, content;
    

    为此,请务必在content 上有一个GiST index

    但是您可能需要做更多的事情。您可以在识别新内容中的关键字后将其与文本搜索结合使用..

    【讨论】:

      【解决方案2】:

      您需要在 Postgres 中使用全文搜索。

      http://www.postgresql.org/docs/9.1/static/textsearch-intro.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-22
        • 2019-10-24
        • 1970-01-01
        • 2012-01-20
        • 2012-03-01
        • 2017-08-12
        • 1970-01-01
        • 2010-09-07
        相关资源
        最近更新 更多