首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将tsvector与另一个tsvector进行比较?

如何将tsvector与另一个tsvector进行比较?
EN

Stack Overflow用户
提问于 2013-10-24 12:44:02
回答 1查看 523关注 0票数 3

我正在尝试获取给定记录的“可能相关”记录。

表上有一个tsvector ( tsv ),所以我在想如何将源tsv转换为tsquery格式,然后像普通的排名搜索一样找到最相关的匹配。

代码语言:javascript
复制
SELECT title,
    link,
    IMAGE,
    intro,
    created_at,
    updated_at,
    ts_rank_cd(tsv, q.match::tsquery) AS rank
FROM items,
    (
        SELECT tsv AS match
        FROM items
        WHERE id = 1234
        ) AS q
WHERE id <> 1234
ORDER BY rank DESC LIMIT 10;

有没有一个很好的方法来实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2013-12-01 17:29:07

我做了一些调查,似乎没有一个简单的方法来做到这一点。我认为为了有效地做到这一点,你可能需要你自己的C函数,它可以提供从一个tsvector到另一个tsvector的距离(然后你可以使用KNN搜索)。

无论哪种方式,都没有一种非常简单的方法来做到这一点,这可能是大量的工作,但它似乎应该是一个普遍适用的问题,所以一般社区可能会对解决方案感兴趣。

注意,这并不像听起来那么微不足道。假设我写了一本关于艾伯特·洛德的“故事的歌手”的书,以及他对诗歌公式的强调。假设我把它叫做“阿尔伯特·洛德和言辞之戒”这将创建一个Albert:1 Lord:2 Ring:5 Words:7的tsvector,指环王是Lord:2 Ring:5,这将创造一个非常错误的相似感。如果你涉及到任何分类,你也会想要利用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19557116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档