我希望匹配两个字符串并返回一个分数,我不关心顺序,只是字符匹配的百分比..我正在看'string_score'宝石,但它关心的顺序..可以看到我的测试......有关更好方法的任何建议吗?
require 'string_score/ext/string'
"JAMES DOWNY".downcase.score("Downy, James".downcase)
#=> 0
"JAMES DOWNY".downcase.score("James Downy".downcase)
#=> 1
"JAMES DOWNY".downcase.score("James, Downy".downcase)
# w the comma
#=> 0
答案 0 :(得分:1)
好的,所以我环顾四周,特别是“string_score”,“得分手”和“文字”宝石。对于这个特定的问题,那些并没有削减它。我决定选择“amatch”宝石。
这是我编写的代码,用于检查两个字符串之间的一致性。
require 'rubygems'
require 'scorer'
require 'amatch'
include Amatch
class String
def order_downcase
self.chars.sort_by(&:downcase).join.downcase
end
end
def goodmatch?(check_string,base_string)
x = JaroWinkler.new(basestring.order_downcase)
x.match(check_string.order_downcase)
end
但它仍然不完美。例如,如果我做好匹配?(“一个”,“两个”)它返回0.0。我相信这太低了,因为两个单词都是“o”所以它应该是10%左右。 我会给能够改善此解决方案的人提供答案和投票。