我正在尝试使用Searchkick gem为MySQL数据库中的blob列提供全文搜索,该列具有以二进制格式存储的文本数据,在使用Zlib.inflate(model_column)
函数时将变为可读。
是否有办法在将数据传递给searchkick之前执行数据转换?
将searchkick添加到我的应用程序中的其他模型工作,只有当索引blob列时,我才会收到此错误
Events.first.reindex
Events Load (0.5ms) SELECT `events`.* FROM `events` LIMIT 1
Events Store (3.4ms) {"id":"","exception":["Encoding::UndefinedConversionError","\"\\x9C\" from ASCII-8BIT to UTF-8"]}
Encoding::UndefinedConversionError: "\x9C" from ASCII-8BIT to UTF-8
答案 0 :(得分:1)
您可以使用search_data
方法控制索引的数据。更改此方法后调用Model.reindex
。例如:
class Event < ActiveRecord::Base
belongs_to :user
def search_data
{
blob: Zlib.inflate(model_column)
# ...
}
end
end