我正在尋找關於如何最好地匹配包含字符串鍵/值對的兩個散列表的想法。模糊匹配兩個哈希表?
下面是我遇到的實際問題:我有結構化數據進入數據庫。我需要更新已經在數據庫中的記錄,但是,源中的ANY值可能會更改,因此我沒有可靠的ID。
我想模糊匹配兩行,源和數據庫,並作出「受過教育」的猜測,如果它應該更新或插入。
任何想法將不勝感激。
解決方案
解決方案基於本羅賓遜的職位。工作得很好,允許在這裏和那裏以及基於自定義密鑰的權重有小的不匹配。
require 'rubygems'
require 'amatch'
class Hash
def fuzzy_match(hash, key_weights = {})
sum_total = 0
sum_weights = 0
self.keys.each do |key|
weight = key_weights[key] || 1
next if weight == 0
weight *= 10000
match = self[key].to_s.levenshtein_similar(hash[key].to_s) * weight
sum_total += match
sum_weights += weight
end
sum_total.to_f/sum_weights.to_f
end
end
我建議你拿出一個防彈解決方案來匹配你收到的東西或準備好你的許多假陰性。你要麼關心重複,要麼不關心。 – 2010-05-10 14:35:42