首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL是否使用tf-idf?

PostgreSQL是否使用tf-idf?
EN

Stack Overflow用户
提问于 2013-08-18 14:44:11
回答 4查看 3K关注 0票数 7

我想知道在带有GIN/GiST索引的PostgreSQL 9.3中的全文搜索是否使用tf-idf (词频-逆文档频率)。

特别是,在我的词组专栏中,我有一些更受欢迎的词,而有些词则非常独特(即名称)。我想对这些列建立索引,以便匹配的唯一单词的权重将高于普通单词。

EN

回答 4

Stack Overflow用户

发布于 2014-07-19 01:40:42

不是的。在ts_rank函数中,没有本机方法可以使用结果的全局(语料库)频率对结果进行排名。然而,排名算法确实基于文档中的频率进行排名:

http://www.postgresql.org/docs/9.3/static/textsearch-controls.html

因此,如果我搜索"dog|chihuahua“,以下两个文档将具有相同的排名,尽管”chihuahua“一词的出现频率相对较低:

代码语言:javascript
复制
"I want a dog"
"I want a chihuahua"

但是,以下行的排名将高于上面的两行,因为它在文档中包含了两次词干标记"dog“:

代码语言:javascript
复制
"dog lovers have an average of 1.5 dogs"

简而言之:文档中较高的词频会导致较高的排名,但语料库中较低的词频没有影响。

一个警告:文本搜索不会忽略停用词,因此您不会匹配超高频单词,如" the“、"a”、"of“、"for”等(假设您已正确设置语言)。

票数 4
EN

Stack Overflow用户

发布于 2014-08-01 09:19:14

No Postgres不使用TF-IDF作为文档之间的相似性度量。

如果文档中包含查询词的频率更高,则ts_rank更高。它没有考虑到该术语的全局频率。

如果文档包含的查询词更接近且频率更高,则ts_rank_cd更高。它没有考虑到该术语的全局频率。

文本搜索创建器有一个名为smlar的扩展,它允许您使用TF-IDF计算数组之间的相似度。它还允许您将tsvector转换为数组,并支持快速索引。

票数 3
EN

Stack Overflow用户

发布于 2021-12-22 22:46:10

如果您使用ts_vector来存储TF,使用GIN来存储IDF,使用ts_query来查询数据,就会发生这种情况。

我发现Efficiently searching text using postgres上的这篇文章对设置它很有帮助。

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

https://stackoverflow.com/questions/18296444

复制
相关文章

相似问题

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