gpt4 book ai didi

postgresql - 词素在 tsvector 中的位置

转载 作者:行者123 更新时间:2023-11-29 12:50:09 26 4
gpt4 key购买 nike

我有以下几行文字:

“蓝色药丸”;
“红色药丸”;
“蓝移”;
“红眼”

我想选择行,其中 Red 是第一个单词,Pill 是第二个单词。假设地,它可以通过使用 tsquerytsvector 来完成,因为 tsvector 的输出还包含每个词素的位置。但是我没有找到任何允许通过数字访问向量词素的函数。是否有任何正确的方法来选择行,在定义的位置匹配 ts_query

最佳答案

用 tsvector 可以做到这一点:

with data as (
select * from (
VALUES (1, 'Blue pill'),
(2, 'Red pill'),
(3, 'Blue shift'),
(4, 'Red eye')
) v(id, t)
)
select id, lexeme, positions
FROM data
CROSS JOIN unnest(to_tsvector(t)) u(lexeme, positions, weights)
WHERE (lexeme = 'red' and positions @> '{1}')
OR (lexeme = 'pill' and positions @> '{2}');
id | lexeme | positions
----+--------+-----------
1 | pill | {2}
2 | pill | {2}
2 | red | {1}
4 | red | {1}
(4 rows)

不过,我认为使用正则表达式可能更容易做到这一点。

关于postgresql - 词素在 tsvector 中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221163/

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