Searchkick索引blob列

时间:2016-04-12 12:13:56

标签: ruby-on-rails ruby searchkick

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

您可以使用search_data方法控制索引的数据。更改此方法后调用Model.reindex。例如:

class Event < ActiveRecord::Base
  belongs_to :user

  def search_data
    {
      blob: Zlib.inflate(model_column)
      # ...
    }
  end
end

参考:https://github.com/ankane/searchkick#indexing