1

我正在浏览轮胎 gem(将其用作 Elsaticsearch 客户端)库,尤其是 reindex 方法。这是 ruby​​ 脚本的链接: https ://github.com/karmi/tire/blob/master/lib/tire/index.rb

所以这里是轮胎宝石中的重新索引方法。

def reindex(name, options={}, &block)
  new_index = Index.new(name)
  new_index.create(options) unless new_index.exists?

  transform = options.delete(:transform)

  Search::Scan.new(self.name, &block).each do |results|

    documents = results.map do |document|
      document  = document.to_hash.except(:type, :_index, :_explanation, :_score, :_version, :highlight, :sort)
      document  = transform.call(document) if transform
      document
    end

    new_index.bulk_store documents
  end
end

为了进行重新索引,我得到了整个滚动和扫描的概念。但我无法理解的是上述方法中的转换选项。

这是做什么的:

transform = options.delete(:transform)

和这个:

document  = transform.call(document) if transform

达到?

任何人都可以提供有关如何使用 :transform 选项的示例或用例吗?

4

0 回答 0