gpt4 book ai didi

postgresql - 将来自多行的 tsvectors 合并为一个

转载 作者:行者123 更新时间:2023-11-29 12:01:52 28 4
gpt4 key购买 nike

我有一个带有文本字段的表和一个包含该字段的搜索索引的 tsvector:

CREATE TABLE test (pk bigint, value text, tsv tsvector);

如何创建一个 tsvector,它是满足某些条件的所有行的向量组合?

SELECT value FROM test
WHERE combine_my_vectors(SELECT tsv FROM test WHERE pk IN (some list))
@@ to_tsquery('search me');

我知道 tsvector 可以与 || 结合使用,但在这里似乎不可能。我对 combine_my_vectors 使用什么?

我宁愿避免必须先组合我的 value 文本字段,然后再从中创建一个 tsvector

最佳答案

PostgreSQL 的优点在于它的可扩展性。

您可以简单地为此定义自己的聚合:

CREATE AGGREGATE tsvector_agg(tsvector) (
STYPE = pg_catalog.tsvector,
SFUNC = pg_catalog.tsvector_concat,
INITCOND = ''
);

你可以这样使用它:

SELECT tsvector_agg(tsv) FROM test;

当然你不能为此使用全文搜索索引,因为匹配的值不属于单个行。

关于postgresql - 将来自多行的 tsvectors 合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54292440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com