尝试实施对其他问题的建议:
我已编写此迁移以删除当前索引并创建新索引:
class ChangeIndexes < ActiveRecord::Migration[5.1]
def change
remove_index :part_masters, name: "part_masters_on_combo_idx"
execute <<-SQL
CREATE INDEX ON part_masters (lower(unaccent(combo)) text_pattern_ops);
CREATE INDEX ON locations (lower(unaccent(ubicacion)) text_pattern_ops);
SQL
end
end
问题是我收到了这个错误,我认为因为我使用了较低或不相似的函数来创建索引:
PG::InvalidObjectDefinition: ERROR: functions in index expression must be marked IMMUTABLE
答案 0 :(得分:0)
如果有人在将来发现它有用,用户@ laurenz-albe在引用的问题中为这个问题提供了解决方案,只需要将函数unaccent创建为自定义pg函数:
CREATE FUNCTION my_unaccent(text) RETURNS text LANGUAGE SQL IMMUTABLE AS
'SELECT unaccent($1)';