2012-04-05 64 views
11
CREATE INDEX message_fulltext_idx ON feedback USING gin(to_tsvector(message)); 
 
ERROR: functions in index predicate must be marked IMMUTABLE 

如何避免這種情況?Postgres的全文索引

回答

16

您需要包含可選的配置參數。沒有它,這個函數並不是不可變的。例如,如果您想標準英文文本解析:

CREATE INDEX message_fulltext_idx ON feedback 
    USING gin(to_tsvector('english', message)); 
+6

這是正確的答案。第一種形式的'to_tsvector'將使用來自設置'default_text_search_config'的config參數的默認值。由於這是一個可改變的設置,該功能並不是不變的。如果它發生變化,基於非模仿函數的現有索引將被無聲地破壞。所以這是禁止的。請參閱http://www.postgresql.org/docs/current/static/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX。 – Edmund 2012-04-05 12:46:02