抱歉问了个基本问题。
我有一个包含以下列的表。
Column | Type | Modifiers
--------+---------+-----------
id | integer |
doc_id | bigint |
text | text |
- 我正在尝试对“文本”(第3列)进行文本匹配
- 尝试在文本列上进行文本匹配时收到错误消息。表示字符串对于ts_vector来说太长。
我只想要包含“其他事件”字样的观察
SELECT * FROM eightks\d
WHERE to_tsvector(text) @@ to_tsquery('other_events')
我知道ts_vector的长度有限制。
错误信息
ERROR: string is too long for tsvector (2368732 bytes, max 1048575 bytes)
如何将文本列转换为ts_vector,这是否可以解决大小限制问题?或者,如何排除超过最大大小的观测?
Postgres版本9.3.5.0
下面是对限制limit的引用
谢谢
1条答案
按热度按时间n3schb8v1#
处理
ts_vector
大小限制的一种方法是将text
列中的文档分割成更小的块进行搜索,然后合并这些段。拆分列后,您可以将块存储到单独的行或列中。解决
ts_vector
大小限制的另一种方法是使用截断的文本值调用to_tsvector()
。这可以通过创建一个触发器函数来实现,该函数将ts_vector
列设置为截断的文本值。