PostgreSQL:是否可以手动构建tsvector值?

5
我希望实现一个信息检索系统,使用向量空间模型,但包含多个术语标记和自定义的术语加权函数。
我考虑在PostgreSQL中构建我的倒排索引,而不是使用文件系统。我阅读了关于GIN索引的文章,它可以在tsvector列上构建这样一个索引。
我能否手动构建tsvector值,而不调用to_tsvector函数,以便我可以使用自定义标记和自定义权重构建我的“自定义”向量?
2个回答

3

如果有帮助的话,以下是对原回答的补充:

select $$'foo':1 'bar':2 'baz':10$$::tsvector;
         tsvector         
--------------------------
 'bar':2 'baz':10 'foo':1
(1 row)

3

您可以手动创建tsvector。但据我所知,您只能分配4种不同的权重,即A、B、C或D。多词标记必须用单引号括起来,以便将它们作为一个标记保持在一起。

select $$'two words':1c oneword$$::tsvector;
         tsvector         
--------------------------
 'oneword' 'two words':1C

但是我需要分配给词项的权重是修改后的TF-IDF值,而不是'A'、'B'或'C'!这是否可能? - Nina
@Nina 无法使用tsvector实现。 - jjanes
嗯,所以我不能依赖于PostgreSQL来实现我的信息检索系统。不过,无论如何,我会将您的帖子标记为答案,因为您提供了手动构建tsvector的方式。 - Nina
如果你要建立自己的索引,你可以在 postgres 中添加一个新类型,并在你的数据类型上使用它们的 GIN 索引。你需要编写一个扩展来实现它,但你可以确保在自定义数据类型上使用 GIN 索引。 - Peter Gerdes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接