有没有一种简单的方法可以删除 tsvector 中词素的出现?
我在表中有一个 tsvector 列,我希望能够从 tsvector 中删除词素。
我已经开始使用 ts_stat 来重建一个新的 tsvector,但它看起来相当复杂。
有简单的方法吗?
I've got a tsvector column in a table and I would like to be able to remove a lexeme from the tsvector.
I've started playing around with ts_stat to rebuild a new tsvector, but it seems quite complicated.
Is there a simple way to do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将其转换为文本,使用正则表达式删除,然后转换回 tsvector。
Cast it to text, remove with regexp, and cast back to tsvector.
截至 2022 年 8 月(撰写此评论时),您可以使用
ts_delete()
,它具有以下签名:单个词位的示例:
如签名中所示,您还可以传递数组:
一个有趣的用例是从另一个
tsvector
中减去一个tsvector
,这可以通过组合ts_delete()
和来完成tsvector_to_array():
As of Aug 2022 (the moment when this comment was written), you can use
ts_delete()
, which has the below signatures:Example case for a single lexeme:
As seen in the signature, you can also pass an array:
An interesting use case is subtracting a
tsvector
from anothertsvector
, which can be done by combiningts_delete()
andtsvector_to_array()
: