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

Làm cách nào để tránh điều này?Chỉ số toàn văn Postgres

Trả lời

16

Bạn cần bao gồm thông số cấu hình tùy chọn. Không có nó, hàm này không phải là bất biến. Ví dụ: nếu bạn muốn phân tích cú pháp văn bản tiếng Anh chuẩn:

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

Đây là câu trả lời đúng. Dạng đầu tiên của 'to_tsvector' sẽ sử dụng một mặc định cho tham số config xuất phát từ thiết lập' default_text_search_config'. Vì đó là một thiết lập có thể thay đổi, chức năng này không phải là bất biến. Nếu nó thay đổi, một chỉ mục hiện có dựa trên chức năng không mimmutable sẽ âm thầm bị hỏng. Vì vậy, nó bị cấm. Xem http://www.postgresql.org/docs/current/static/textsearch-tables.html#TEXTSEARCH-TABLES-INDEX. – Edmund

Các vấn đề liên quan