簡體   English   中英

在Ruby中檢測相似的字符串。

[英]Detecting similar strings in Ruby.

在我的數據庫中,有條目。 Тормозной дискДиски тормозные LPR等在art_groups_arr陣列。 我想找到所有類似於Тормозной диск的條目,例如Диски тормозные LPR

這段代碼:

art_groups_arr.each do |artgrarr|
  if n2.art_group.include?(artgrarr)
    non_original << n2
  end
end

顯然找不到。 如何找到類似的字符串?

您也許可以使用正則表達式,例如:

art_groups_arr.each do |art_gr_arr|
  if n2.art_group.any? { |element|
    /ормозн/ =~ element and /диск/ =~ element
  } then non_original << n2 end
end

另外, 您可以嘗試聲稱實現Smith-Waterman算法的fuzz_ball gem

require 'fuzz_ball'
THRESHOLD_SCORE = 0.75
MATCHER = FuzzBall::Searcher.new [ 'Тормозной диск LPR' ]

def complies?( str )
  matchdata = MATCHER.search str
  return false if matchdata.nil? or matchdata.empty?
  score = matchdata[0][:score]
  puts "score is #{score}"
  score > THRESHOLD_SCORE
end

art_groups_arr.each do |art_gr_arr|
  if n2.art_group.any? { |element| complies? element } then
    non_original << n2
  end
end

對於'Диски тормозные LPR'您會獲得0.861分數,您必須調整閾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM