family-reunion 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/family-reunion.gemspec +3 -3
- data/lib/family-reunion/exact_matcher.rb +6 -4
- data/lib/family-reunion/matcher_helper.rb +4 -2
- data/lib/family-reunion/nomatch_organizer.rb +9 -6
- data/lib/family-reunion/top_node.rb +3 -3
- data/spec/fixtures/matched_merges.json +1 -1
- data/spec/fuzzy_matcher_spec.rb +3 -3
- data/spec/nomatch_organizer_spec.rb +1 -1
- data/spec/{node_spec.rb → top_node_spec.rb} +1 -1
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/family-reunion.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{family-reunion}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dmitry Mozzherin", "David Shorthouse"]
|
@@ -50,11 +50,11 @@ Gem::Specification.new do |s|
|
|
50
50
|
"spec/fixtures/valid_names_strings_primary.json",
|
51
51
|
"spec/fixtures/valid_names_strings_secondary.json",
|
52
52
|
"spec/fuzzy_matcher_spec.rb",
|
53
|
-
"spec/node_spec.rb",
|
54
53
|
"spec/nomatch_organizer_spec.rb",
|
55
54
|
"spec/spec_helper.rb",
|
56
55
|
"spec/taxamatch_preprocessor_spec.rb",
|
57
|
-
"spec/taxamatch_wrapper_spec.rb"
|
56
|
+
"spec/taxamatch_wrapper_spec.rb",
|
57
|
+
"spec/top_node_spec.rb"
|
58
58
|
]
|
59
59
|
s.homepage = %q{http://github.com/GlobalNamesArchitecture/family-reunion}
|
60
60
|
s.licenses = ["MIT"]
|
@@ -10,11 +10,11 @@ class FamilyReunion
|
|
10
10
|
FamilyReunion.logger_write(@fr.object_id, "Merging exact matches of accepted names")
|
11
11
|
add_valid_matches(get_valid_matches)
|
12
12
|
FamilyReunion.logger_write(@fr.object_id, "Merging exact matches of accepted names to synonyms")
|
13
|
-
add_synonym_matches(get_valid_to_synonym_matches, :
|
13
|
+
add_synonym_matches(get_valid_to_synonym_matches, :exact_valid_to_synonym)
|
14
14
|
FamilyReunion.logger_write(@fr.object_id, "Merging exact matches of synonyms to accepted names")
|
15
|
-
add_synonym_matches(get_synonym_to_valid_matches, :
|
15
|
+
add_synonym_matches(get_synonym_to_valid_matches, :exact_synonym_to_valid)
|
16
16
|
FamilyReunion.logger_write(@fr.object_id, "Merging exact matches of synonyms")
|
17
|
-
add_synonym_matches(get_synonym_to_synonym_matches, :
|
17
|
+
add_synonym_matches(get_synonym_to_synonym_matches, :exact_synonym_to_synonym)
|
18
18
|
end
|
19
19
|
|
20
20
|
private
|
@@ -28,8 +28,10 @@ class FamilyReunion
|
|
28
28
|
# they are excluded from valid_matches
|
29
29
|
valid_matches.each do |name|
|
30
30
|
primary_id = @fr.primary_node.valid_names_hash[name][:id].to_s.to_sym
|
31
|
+
path = @fr.primary_node.valid_names_hash[name][:path]
|
32
|
+
path_ids = @fr.primary_node.valid_names_hash[name][:path_ids]
|
31
33
|
secondary_id = @fr.secondary_node.valid_names_hash[name][:id].to_s.to_sym
|
32
|
-
@fr.merges[primary_id] = {:matches => {secondary_id => {:match_type => :
|
34
|
+
@fr.merges[primary_id] = {:matches => {secondary_id => {:match_type => :exact_valid_to_valid, :path => path, :path_ids => path_ids }}, :nonmatches => {}}
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
@@ -4,7 +4,9 @@ class FamilyReunion
|
|
4
4
|
def format_secondary_id_for_merge(secondary_ids, match_type)
|
5
5
|
secondary_ids.inject({}) do |res, i|
|
6
6
|
raise "Secondary id is not a symbol" unless i.is_a?(Symbol)
|
7
|
-
|
7
|
+
path = @fr.secondary_node.ids_hash[i][:path]
|
8
|
+
path_ids = @fr.secondary_node.ids_hash[i][:path_ids]
|
9
|
+
res[i] = {:match_type => match_type, :path => path, :path_ids => path_ids} unless res.has_key?(i)
|
8
10
|
res
|
9
11
|
end
|
10
12
|
end
|
@@ -16,7 +18,7 @@ class FamilyReunion
|
|
16
18
|
@fr.merges[primary_id][:matches][key] = val unless @fr.merges[primary_id][:matches].has_key?(key)
|
17
19
|
end
|
18
20
|
else
|
19
|
-
@fr.merges[primary_id] = {:matches => secondary_id_matches, :nonmatches =>
|
21
|
+
@fr.merges[primary_id] = {:matches => secondary_id_matches, :nonmatches => {}}
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -14,7 +14,7 @@ class FamilyReunion
|
|
14
14
|
def get_nomach_secondary_ids
|
15
15
|
return @nomatch_secondary_ids if @nomatch_secondary_ids
|
16
16
|
match_ids = @fr.merges.map { |key, val| val[:matches].keys }.flatten.uniq
|
17
|
-
empty_nodes_ids = @fr.secondary_node.data[:empty_nodes].map { |node| node[:id].to_sym }
|
17
|
+
empty_nodes_ids = @fr.secondary_node.data[:empty_nodes].map { |node| node[:id].to_s.to_sym }
|
18
18
|
valid_names_ids = @fr.secondary_node.ids_hash.keys.map { |k| k }
|
19
19
|
@nomatch_secondary_ids = valid_names_ids - match_ids
|
20
20
|
end
|
@@ -39,18 +39,21 @@ class FamilyReunion
|
|
39
39
|
name = path.pop.to_sym
|
40
40
|
if paths_hash.has_key?(name)
|
41
41
|
found_node = true
|
42
|
-
add_merged_node(paths_hash[name][1][-1], node[:id])
|
42
|
+
add_merged_node(paths_hash[name][1][-1], node[:id].to_s.to_sym)
|
43
43
|
break
|
44
44
|
end
|
45
45
|
end
|
46
|
-
add_merged_node(@fr.primary_node.root_id, node[:id]) unless found_node
|
46
|
+
add_merged_node(@fr.primary_node.root_id, node[:id].to_s.to_sym) unless found_node
|
47
47
|
end
|
48
48
|
|
49
49
|
def add_merged_node(primary_node_id, secondary_node_id)
|
50
|
-
|
51
|
-
|
50
|
+
secondary_node_id = secondary_node_id.to_s.to_sym
|
51
|
+
path = @fr.secondary_node.ids_hash[secondary_node_id][:path]
|
52
|
+
path_ids = @fr.secondary_node.ids_hash[secondary_node_id][:path_ids]
|
53
|
+
if @fr.merges.has_key?(primary_node_id) #never happens?
|
54
|
+
@fr.merges[primary_node_id][:nonmatches][secondary_node_id] = { :match_type => nil, :path => path, :path_ids => path_ids }
|
52
55
|
else
|
53
|
-
@fr.merges[primary_node_id] = {:matches =>
|
56
|
+
@fr.merges[primary_node_id] = { :matches => {}, :nonmatches => {secondary_node_id => { :match_type => nil, :path => path, :path_ids => path_ids } } }
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
@@ -48,11 +48,11 @@ class FamilyReunion
|
|
48
48
|
def ids_hash
|
49
49
|
return @ids_hash if @ids_hash
|
50
50
|
@ids_hash = valid_names_hash.inject({}) do |res, key_val|
|
51
|
-
res[key_val[1][:id].to_sym] = key_val[1]
|
51
|
+
res[key_val[1][:id].to_s.to_sym] = key_val[1]
|
52
52
|
res
|
53
53
|
end
|
54
54
|
data[:empty_nodes].each do |node|
|
55
|
-
@ids_hash[node[:id].to_sym] = node
|
55
|
+
@ids_hash[node[:id].to_s.to_sym] = node
|
56
56
|
end
|
57
57
|
@ids_hash
|
58
58
|
end
|
@@ -93,7 +93,7 @@ class FamilyReunion
|
|
93
93
|
|
94
94
|
def root_id
|
95
95
|
unless @root_id
|
96
|
-
@root_id = data[:leaves][0][:path_ids][0].to_sym
|
96
|
+
@root_id = data[:leaves][0][:path_ids][0].to_s.to_sym
|
97
97
|
end
|
98
98
|
@root_id
|
99
99
|
end
|
@@ -1 +1 @@
|
|
1
|
-
{"invasiveants:tid:1394":{"matches":{"hex10349843":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1395":{"matches":{"hex10349884":{"match_type":"valid_to_valid"},"hex10357986":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1397":{"matches":{"hex10349957":{"match_type":"valid_to_valid"},"hex10357927":{"match_type":"synonym_to_valid"},"hex10357934":{"match_type":"fuzzy_synonym_to_synonym"}},"nonmatches":[]},"invasiveants:tid:1396":{"matches":{"hex10349938":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1401":{"matches":{"hex10806368":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1402":{"matches":{"hex10355636":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1404":{"matches":{"hex10355627":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1405":{"matches":{"hex10355629":{"match_type":"valid_to_valid"},"hex10355612":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1400":{"matches":{"hex10355607":{"match_type":"valid_to_valid"},"hex10355632":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1399":{"matches":{"hex10355641":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1482":{"matches":{"hex10356583":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1480":{"matches":{"hex10356717":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1484":{"matches":{"hex10356627":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1483":{"matches":{"hex10356575":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1499":{"matches":{"hex10355947":{"match_type":"valid_to_valid"},"hex10356042":{"match_type":"synonym_to_valid"},"hex10357973":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1501":{"matches":{"hex10356046":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1502":{"matches":{"hex10355966":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1503":{"matches":{"hex10356075":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1504":{"matches":{"hex10356159":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1498":{"matches":{"hex10356327":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1505":{"matches":{"hex10356104":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1500":{"matches":{"hex10356252":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1508":{"matches":{"hex10349086":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1387":{"matches":{"hex10349098":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1413":{"matches":{"hex10358078":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1421":{"matches":{"hex10352185":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1423":{"matches":{"hex10352110":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1422":{"matches":{"hex10352102":{"match_type":"valid_to_valid"},"hex10357976":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1507":{"matches":{"hex10355716":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1456":{"matches":{"hex10353897":{"match_type":"valid_to_valid"},"hex10357874":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1494":{"matches":{"hex10353166":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1426":{"matches":{"hex10357236":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1445":{"matches":{"hex10355173":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1409":{"matches":{"hex10351128":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1486":{"matches":{"hex10770947":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1489":{"matches":{"hex10353034":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1487":{"matches":{"hex10353124":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1488":{"matches":{"hex10353022":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1450":{"matches":{"hex10354823":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1454":{"matches":{"hex10354888":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1451":{"matches":{"hex10354795":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1449":{"matches":{"hex10354968":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1385":{"matches":{"hex10348989":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1463":{"matches":{"hex10354276":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1462":{"matches":{"hex10354255":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1465":{"matches":{"hex10354524":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1460":{"matches":{"hex10354508":{"match_type":"valid_to_valid"},"hex10354647":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1466":{"matches":{"hex10354676":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1458":{"matches":{"hex10354638":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1461":{"matches":{"hex10354215":{"match_type":"valid_to_valid"},"hex10354233":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1459":{"matches":{"hex10354345":{"match_type":"valid_to_valid"},"hex10354584":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1472":{"matches":{"hex10358401":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1447":{"matches":{"hex10355198":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1468":{"matches":{"hex10354059":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1419":{"matches":{"hex10357434":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1418":{"matches":{"hex10357430":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1415":{"matches":{"hex10358491":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1416":{"matches":{"hex10358551":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1392":{"matches":{"hex10351300":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1389":{"matches":{"hex10351289":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1391":{"matches":{"hex10351309":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1390":{"matches":{"hex10351285":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1475":{"matches":{"hex10357837":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1478":{"matches":{"hex10357759":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1476":{"matches":{"hex10357766":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1477":{"matches":{"hex10357857":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1474":{"matches":{"hex10357716":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1436":{"matches":{"hex10358305":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1437":{"matches":{"hex10358173":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1430":{"matches":{"hex10352512":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1431":{"matches":{"hex10352415":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1428":{"matches":{"hex10352498":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1429":{"matches":{"hex10352402":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1434":{"matches":{"hex10351578":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1470":{"matches":{"hex10358678":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1411":{"matches":{"hex10352902":{"match_type":"valid_to_valid"}},"nonmatches":[]},"invasiveants:tid:1481":{"matches":{"hex10356720":{"match_type":"valid_to_synonym"}},"nonmatches":[]},"invasiveants:tid:1491":{"matches":{"hex10358019":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1492":{"matches":{"hex10358021":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1496":{"matches":{"hex10353188":{"match_type":"synonym_to_valid"},"hex10353182":{"match_type":"synonym_to_valid"},"hex10353170":{"match_type":"synonym_to_valid"},"hex10353199":{"match_type":"synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1407":{"matches":{"hex10349533":{"match_type":"synonym_to_valid"},"hex10758181":{"match_type":"fuzzy_valid_to_synonym"},"hex10758108":{"match_type":"fuzzy_synonym_to_valid"}},"nonmatches":[]},"invasiveants:tid:1453":{"matches":{"hex10354887":{"match_type":"fuzzy_valid_to_valid"}},"nonmatches":[]}}
|
1
|
+
{"invasiveants:tid:1394":{"matches":{"hex10349843":{"match_type":"exact_valid_to_valid","path":["Formicidae","Camponotus","Camponotus floridanus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1393","invasiveants:tid:1394"]}},"nonmatches":{}},"invasiveants:tid:1395":{"matches":{"hex10349884":{"match_type":"exact_valid_to_valid","path":["Formicidae","Camponotus","Camponotus herculeanus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1393","invasiveants:tid:1395"]},"hex10357986":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica atra"],"path_ids":["hex100521","hex1023020","hex10357986"]}},"nonmatches":{}},"invasiveants:tid:1397":{"matches":{"hex10349957":{"match_type":"exact_valid_to_valid","path":["Formicidae","Camponotus","Camponotus sexguttatus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1393","invasiveants:tid:1397"]},"hex10357927":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica ruficeps"],"path_ids":["hex100521","hex1023020","hex10357927"]},"hex10357934":{"match_type":"fuzzy_synonym_to_synonym","path":["Formicidae","Formica","Formica lavateri"],"path_ids":["hex100521","hex1023020","hex10357934"]}},"nonmatches":{}},"invasiveants:tid:1396":{"matches":{"hex10349938":{"match_type":"exact_valid_to_valid","path":["Formicidae","Camponotus","Camponotus planatus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1393","invasiveants:tid:1396"]}},"nonmatches":{}},"invasiveants:tid:1401":{"matches":{"hex10806368":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla minutior"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1401"]}},"nonmatches":{}},"invasiveants:tid:1402":{"matches":{"hex10355636":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla nuda"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1402"]}},"nonmatches":{}},"invasiveants:tid:1404":{"matches":{"hex10355627":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla venustula"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1404"]}},"nonmatches":{}},"invasiveants:tid:1405":{"matches":{"hex10355629":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla wroughtonii"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1405"]},"hex10355612":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla longispina"],"path_ids":["hex100521","hex1022909","hex10355612"]}},"nonmatches":{}},"invasiveants:tid:1400":{"matches":{"hex10355607":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla mauritanica"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1400"]},"hex10355632":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla ectopia"],"path_ids":["hex100521","hex1022909","hex10355632"]}},"nonmatches":{}},"invasiveants:tid:1399":{"matches":{"hex10355641":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cardiocondyla","Cardiocondyla emeryi"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1398","invasiveants:tid:1399"]}},"nonmatches":{}},"invasiveants:tid:1482":{"matches":{"hex10356583":{"match_type":"exact_valid_to_valid","path":["Formicidae","Solenopsis","Solenopsis richteri"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1479","invasiveants:tid:1482"]}},"nonmatches":{}},"invasiveants:tid:1480":{"matches":{"hex10356717":{"match_type":"exact_valid_to_valid","path":["Formicidae","Solenopsis","Solenopsis geminata"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1479","invasiveants:tid:1480"]}},"nonmatches":{}},"invasiveants:tid:1484":{"matches":{"hex10356627":{"match_type":"exact_valid_to_valid","path":["Formicidae","Solenopsis","Solenopsis xyloni"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1479","invasiveants:tid:1484"]}},"nonmatches":{}},"invasiveants:tid:1483":{"matches":{"hex10356575":{"match_type":"exact_valid_to_valid","path":["Formicidae","Solenopsis","Solenopsis texana"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1479","invasiveants:tid:1483"]}},"nonmatches":{}},"invasiveants:tid:1499":{"matches":{"hex10355947":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium caespitum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1499"]},"hex10356042":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Tetramorium","Tetramorium jiangxiense"],"path_ids":["hex100521","hex1022945","hex10356042"]},"hex10357973":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica fusca"],"path_ids":["hex100521","hex1023020","hex10357973"]}},"nonmatches":{}},"invasiveants:tid:1501":{"matches":{"hex10356046":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium insolens"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1501"]}},"nonmatches":{}},"invasiveants:tid:1502":{"matches":{"hex10355966":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium lanuginosum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1502"]}},"nonmatches":{}},"invasiveants:tid:1503":{"matches":{"hex10356075":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium pacificum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1503"]}},"nonmatches":{}},"invasiveants:tid:1504":{"matches":{"hex10356159":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium simillimum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1504"]}},"nonmatches":{}},"invasiveants:tid:1498":{"matches":{"hex10356327":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium bicarinatum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1498"]}},"nonmatches":{}},"invasiveants:tid:1505":{"matches":{"hex10356104":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium tsushimae"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1505"]}},"nonmatches":{}},"invasiveants:tid:1500":{"matches":{"hex10356252":{"match_type":"exact_valid_to_valid","path":["Formicidae","Tetramorium","Tetramorium caldarium"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1497","invasiveants:tid:1500"]}},"nonmatches":{}},"invasiveants:tid:1508":{"matches":{"hex10349086":{"match_type":"exact_valid_to_valid","path":["Formicidae","Anoplolepis","Anoplolepis gracilipes"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1386","invasiveants:tid:1508"]}},"nonmatches":{}},"invasiveants:tid:1387":{"matches":{"hex10349098":{"match_type":"exact_valid_to_valid","path":["Formicidae","Anoplolepis","Anoplolepis custodiens"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1386","invasiveants:tid:1387"]}},"nonmatches":{}},"invasiveants:tid:1413":{"matches":{"hex10358078":{"match_type":"exact_valid_to_valid","path":["Formicidae","Formica","Formica truncorum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1412","invasiveants:tid:1413"]}},"nonmatches":{}},"invasiveants:tid:1421":{"matches":{"hex10352185":{"match_type":"exact_valid_to_valid","path":["Formicidae","Lasius","Lasius alienus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1420","invasiveants:tid:1421"]}},"nonmatches":{}},"invasiveants:tid:1423":{"matches":{"hex10352110":{"match_type":"exact_valid_to_valid","path":["Formicidae","Lasius","Lasius niger"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1420","invasiveants:tid:1423"]}},"nonmatches":{}},"invasiveants:tid:1422":{"matches":{"hex10352102":{"match_type":"exact_valid_to_valid","path":["Formicidae","Lasius","Lasius flavus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1420","invasiveants:tid:1422"]},"hex10357976":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica ruficornis"],"path_ids":["hex100521","hex1023020","hex10357976"]}},"nonmatches":{}},"invasiveants:tid:1507":{"matches":{"hex10355716":{"match_type":"exact_valid_to_valid","path":["Formicidae","Wasmannia","Wasmannia auropunctata"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1506","invasiveants:tid:1507"]}},"nonmatches":{}},"invasiveants:tid:1456":{"matches":{"hex10353897":{"match_type":"exact_valid_to_valid","path":["Formicidae","Paratrechina","Paratrechina longicornis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1455","invasiveants:tid:1456"]},"hex10357874":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica vagans"],"path_ids":["hex100521","hex1023020","hex10357874"]}},"nonmatches":{}},"invasiveants:tid:1494":{"matches":{"hex10353166":{"match_type":"exact_valid_to_valid","path":["Formicidae","Technomyrmex","Technomyrmex albipes"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1493","invasiveants:tid:1494"]}},"nonmatches":{}},"invasiveants:tid:1426":{"matches":{"hex10357236":{"match_type":"exact_valid_to_valid","path":["Formicidae","Linepithema","Linepithema humile"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1425","invasiveants:tid:1426"]}},"nonmatches":{}},"invasiveants:tid:1445":{"matches":{"hex10355173":{"match_type":"exact_valid_to_valid","path":["Formicidae","Ochetellus","Ochetellus glaber"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1444","invasiveants:tid:1445"]}},"nonmatches":{}},"invasiveants:tid:1409":{"matches":{"hex10351128":{"match_type":"exact_valid_to_valid","path":["Formicidae","Cyphomyrmex","Cyphomyrmex rimosus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1408","invasiveants:tid:1409"]}},"nonmatches":{}},"invasiveants:tid:1486":{"matches":{"hex10770947":{"match_type":"exact_valid_to_valid","path":["Formicidae","Strumigenys","Strumigenys emmae"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1485","invasiveants:tid:1486"]}},"nonmatches":{}},"invasiveants:tid:1489":{"matches":{"hex10353034":{"match_type":"exact_valid_to_valid","path":["Formicidae","Strumigenys","Strumigenys silvestrii"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1485","invasiveants:tid:1489"]}},"nonmatches":{}},"invasiveants:tid:1487":{"matches":{"hex10353124":{"match_type":"exact_valid_to_valid","path":["Formicidae","Strumigenys","Strumigenys lanuginosa"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1485","invasiveants:tid:1487"]}},"nonmatches":{}},"invasiveants:tid:1488":{"matches":{"hex10353022":{"match_type":"exact_valid_to_valid","path":["Formicidae","Strumigenys","Strumigenys rogeri"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1485","invasiveants:tid:1488"]}},"nonmatches":{}},"invasiveants:tid:1450":{"matches":{"hex10354823":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pachycondyla","Pachycondyla luteipes"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1448","invasiveants:tid:1450"]}},"nonmatches":{}},"invasiveants:tid:1454":{"matches":{"hex10354888":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pachycondyla","Pachycondyla stigma"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1448","invasiveants:tid:1454"]}},"nonmatches":{}},"invasiveants:tid:1451":{"matches":{"hex10354795":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pachycondyla","Pachycondyla obscurans"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1448","invasiveants:tid:1451"]}},"nonmatches":{}},"invasiveants:tid:1449":{"matches":{"hex10354968":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pachycondyla","Pachycondyla chinensis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1448","invasiveants:tid:1449"]}},"nonmatches":{}},"invasiveants:tid:1385":{"matches":{"hex10348989":{"match_type":"exact_valid_to_valid","path":["Formicidae","Anochetus","Anochetus mayri"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1384","invasiveants:tid:1385"]}},"nonmatches":{}},"invasiveants:tid:1463":{"matches":{"hex10354276":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole moerens"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1463"]}},"nonmatches":{}},"invasiveants:tid:1462":{"matches":{"hex10354255":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole micula"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1462"]}},"nonmatches":{}},"invasiveants:tid:1465":{"matches":{"hex10354524":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole oceanica"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1465"]}},"nonmatches":{}},"invasiveants:tid:1460":{"matches":{"hex10354508":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole flavens"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1460"]},"hex10354647":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Pheidole","Pheidole greggi"],"path_ids":["hex100521","hex1022881","hex10354647"]}},"nonmatches":{}},"invasiveants:tid:1466":{"matches":{"hex10354676":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole teneriffana"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1466"]}},"nonmatches":{}},"invasiveants:tid:1458":{"matches":{"hex10354638":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole anastasii"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1458"]}},"nonmatches":{}},"invasiveants:tid:1461":{"matches":{"hex10354215":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole megacephala"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1461"]},"hex10354233":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Pheidole","Pheidole perpusilla"],"path_ids":["hex100521","hex1022881","hex10354233"]}},"nonmatches":{}},"invasiveants:tid:1459":{"matches":{"hex10354345":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pheidole","Pheidole fervens"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1457","invasiveants:tid:1459"]},"hex10354584":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Pheidole","Pheidole amia"],"path_ids":["hex100521","hex1022881","hex10354584"]}},"nonmatches":{}},"invasiveants:tid:1472":{"matches":{"hex10358401":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pseudomyrmex","Pseudomyrmex gracilis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1471","invasiveants:tid:1472"]}},"nonmatches":{}},"invasiveants:tid:1447":{"matches":{"hex10355198":{"match_type":"exact_valid_to_valid","path":["Formicidae","Odontomachus","Odontomachus ruginodis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1446","invasiveants:tid:1447"]}},"nonmatches":{}},"invasiveants:tid:1468":{"matches":{"hex10354059":{"match_type":"exact_valid_to_valid","path":["Formicidae","Plagiolepis","Plagiolepis alluaudi"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1467","invasiveants:tid:1468"]}},"nonmatches":{}},"invasiveants:tid:1419":{"matches":{"hex10357434":{"match_type":"exact_valid_to_valid","path":["Formicidae","Hypoponera","Hypoponera punctatissima"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1417","invasiveants:tid:1419"]}},"nonmatches":{}},"invasiveants:tid:1418":{"matches":{"hex10357430":{"match_type":"exact_valid_to_valid","path":["Formicidae","Hypoponera","Hypoponera opaciceps"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1417","invasiveants:tid:1418"]}},"nonmatches":{}},"invasiveants:tid:1415":{"matches":{"hex10358491":{"match_type":"exact_valid_to_valid","path":["Formicidae","Gnamptogenys","Gnamptogenys porcata"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1414","invasiveants:tid:1415"]}},"nonmatches":{}},"invasiveants:tid:1416":{"matches":{"hex10358551":{"match_type":"exact_valid_to_valid","path":["Formicidae","Gnamptogenys","Gnamptogenys triangularis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1414","invasiveants:tid:1416"]}},"nonmatches":{}},"invasiveants:tid:1392":{"matches":{"hex10351300":{"match_type":"exact_valid_to_valid","path":["Formicidae","Brachymyrmex","Brachymyrmex patagonicus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1388","invasiveants:tid:1392"]}},"nonmatches":{}},"invasiveants:tid:1389":{"matches":{"hex10351289":{"match_type":"exact_valid_to_valid","path":["Formicidae","Brachymyrmex","Brachymyrmex brevicornis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1388","invasiveants:tid:1389"]}},"nonmatches":{}},"invasiveants:tid:1391":{"matches":{"hex10351309":{"match_type":"exact_valid_to_valid","path":["Formicidae","Brachymyrmex","Brachymyrmex obscurior"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1388","invasiveants:tid:1391"]}},"nonmatches":{}},"invasiveants:tid:1390":{"matches":{"hex10351285":{"match_type":"exact_valid_to_valid","path":["Formicidae","Brachymyrmex","Brachymyrmex minutus"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1388","invasiveants:tid:1390"]}},"nonmatches":{}},"invasiveants:tid:1475":{"matches":{"hex10357837":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pyramica","Pyramica gundlachi"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1473","invasiveants:tid:1475"]}},"nonmatches":{}},"invasiveants:tid:1478":{"matches":{"hex10357759":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pyramica","Pyramica membranifera"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1473","invasiveants:tid:1478"]}},"nonmatches":{}},"invasiveants:tid:1476":{"matches":{"hex10357766":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pyramica","Pyramica hexamera"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1473","invasiveants:tid:1476"]}},"nonmatches":{}},"invasiveants:tid:1477":{"matches":{"hex10357857":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pyramica","Pyramica margaritae"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1473","invasiveants:tid:1477"]}},"nonmatches":{}},"invasiveants:tid:1474":{"matches":{"hex10357716":{"match_type":"exact_valid_to_valid","path":["Formicidae","Pyramica","Pyramica eggersi"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1473","invasiveants:tid:1474"]}},"nonmatches":{}},"invasiveants:tid:1436":{"matches":{"hex10358305":{"match_type":"exact_valid_to_valid","path":["Formicidae","Myrmica","Myrmica rubra"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1435","invasiveants:tid:1436"]}},"nonmatches":{}},"invasiveants:tid:1437":{"matches":{"hex10358173":{"match_type":"exact_valid_to_valid","path":["Formicidae","Myrmica","Myrmica ruginodis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1435","invasiveants:tid:1437"]}},"nonmatches":{}},"invasiveants:tid:1430":{"matches":{"hex10352512":{"match_type":"exact_valid_to_valid","path":["Formicidae","Monomorium","Monomorium floricola"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1427","invasiveants:tid:1430"]}},"nonmatches":{}},"invasiveants:tid:1431":{"matches":{"hex10352415":{"match_type":"exact_valid_to_valid","path":["Formicidae","Monomorium","Monomorium pharaonis"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1427","invasiveants:tid:1431"]}},"nonmatches":{}},"invasiveants:tid:1428":{"matches":{"hex10352498":{"match_type":"exact_valid_to_valid","path":["Formicidae","Monomorium","Monomorium destructor"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1427","invasiveants:tid:1428"]}},"nonmatches":{}},"invasiveants:tid:1429":{"matches":{"hex10352402":{"match_type":"exact_valid_to_valid","path":["Formicidae","Monomorium","Monomorium ebeninum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1427","invasiveants:tid:1429"]}},"nonmatches":{}},"invasiveants:tid:1434":{"matches":{"hex10351578":{"match_type":"exact_valid_to_valid","path":["Formicidae","Myrmelachista","Myrmelachista ramulorum"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1433","invasiveants:tid:1434"]}},"nonmatches":{}},"invasiveants:tid:1470":{"matches":{"hex10358678":{"match_type":"exact_valid_to_valid","path":["Formicidae","Prionopelta","Prionopelta antillana"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1469","invasiveants:tid:1470"]}},"nonmatches":{}},"invasiveants:tid:1411":{"matches":{"hex10352902":{"match_type":"exact_valid_to_valid","path":["Formicidae","Eurhopalothrix","Eurhopalothrix floridana"],"path_ids":["invasiveants:tid:1381","invasiveants:tid:1410","invasiveants:tid:1411"]}},"nonmatches":{}},"invasiveants:tid:1481":{"matches":{"hex10356720":{"match_type":"exact_valid_to_synonym","path":["Formicidae","Solenopsis","Solenopsis wagneri"],"path_ids":["hex100521","hex1022959","hex10356720"]}},"nonmatches":{}},"invasiveants:tid:1491":{"matches":{"hex10358019":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica nana"],"path_ids":["hex100521","hex1023020","hex10358019"]}},"nonmatches":{}},"invasiveants:tid:1492":{"matches":{"hex10358021":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Formica","Formica gracilis"],"path_ids":["hex100521","hex1023020","hex10358021"]}},"nonmatches":{}},"invasiveants:tid:1496":{"matches":{"hex10353188":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Technomyrmex","Technomyrmex foreli"],"path_ids":["hex100521","hex1022839","hex10353188"]},"hex10353182":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Technomyrmex","Technomyrmex primroseae"],"path_ids":["hex100521","hex1022839","hex10353182"]},"hex10353170":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Technomyrmex","Technomyrmex brevicornis"],"path_ids":["hex100521","hex1022839","hex10353170"]},"hex10353199":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Technomyrmex","Technomyrmex atrichosus"],"path_ids":["hex100521","hex1022839","hex10353199"]}},"nonmatches":{}},"invasiveants:tid:1407":{"matches":{"hex10349533":{"match_type":"exact_synonym_to_valid","path":["Formicidae","Crematogaster","Crematogaster agnita"],"path_ids":["hex100521","hex1022726","hex10349533"]},"hex10758181":{"match_type":"fuzzy_valid_to_synonym","path":["Formicidae","Trapeziopelta","Trapeziopelta diadela"],"path_ids":["hex100521","hex1057748","hex10758181"]},"hex10758108":{"match_type":"fuzzy_synonym_to_valid","path":["Formicidae","Nothosphinctus","Nothosphinctus silaceus"],"path_ids":["hex100521","hex1057733","hex10758108"]}},"nonmatches":{}},"invasiveants:tid:1453":{"matches":{"hex10354887":{"match_type":"fuzzy_valid_to_valid","path":["Formicidae","Pachycondyla","Pachycondyla solitaria"],"path_ids":["hex100521","hex1022882","hex10354887"]}},"nonmatches":{}}}
|
data/spec/fuzzy_matcher_spec.rb
CHANGED
@@ -24,9 +24,9 @@ describe FamilyReunion::FuzzyMatcher do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should be able to add matches to merges object" do
|
27
|
-
|
28
|
-
@fm.
|
29
|
-
@fr.merges.should ==
|
27
|
+
@fr.stubs(:merges => {})
|
28
|
+
@fm.merge
|
29
|
+
@fr.merges.should == {:"invasiveants:tid:1453"=>{:matches=>{:hex10354887=>{:match_type=>:fuzzy_valid_to_valid, :path=>["Formicidae", "Pachycondyla", "Pachycondyla solitaria"], :path_ids=>["hex100521", "hex1022882", "hex10354887"]}}, :nonmatches=>{}}, :"invasiveants:tid:1407"=>{:matches=>{:hex10758181=>{:match_type=>:fuzzy_valid_to_synonym, :path=>["Formicidae", "Trapeziopelta", "Trapeziopelta diadela"], :path_ids=>["hex100521", "hex1057748", "hex10758181"]}, :hex10758108=>{:match_type=>:fuzzy_synonym_to_valid, :path=>["Formicidae", "Nothosphinctus", "Nothosphinctus silaceus"], :path_ids=>["hex100521", "hex1057733", "hex10758108"]}}, :nonmatches=>{}}, :"invasiveants:tid:1397"=>{:matches=>{:hex10357934=>{:match_type=>:fuzzy_synonym_to_synonym, :path=>["Formicidae", "Formica", "Formica lavateri"], :path_ids=>["hex100521", "hex1023020", "hex10357934"]}}, :nonmatches=>{}}}
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
@@ -18,6 +18,6 @@ describe FamilyReunion::NomatchOrganizer do
|
|
18
18
|
it "should be able to assign nomatches to branches in primary node" do
|
19
19
|
@fr.stubs(:merges => @merges)
|
20
20
|
@no.merge
|
21
|
-
|
21
|
+
@fr.merges.select {|k, v| !v[:nonmatches].empty?}.inject(0) {|res, data| res += data.size; res }.should == 62
|
22
22
|
end
|
23
23
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 5
|
9
|
+
version: 0.1.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Dmitry Mozzherin
|
@@ -214,11 +214,11 @@ files:
|
|
214
214
|
- spec/fixtures/valid_names_strings_primary.json
|
215
215
|
- spec/fixtures/valid_names_strings_secondary.json
|
216
216
|
- spec/fuzzy_matcher_spec.rb
|
217
|
-
- spec/node_spec.rb
|
218
217
|
- spec/nomatch_organizer_spec.rb
|
219
218
|
- spec/spec_helper.rb
|
220
219
|
- spec/taxamatch_preprocessor_spec.rb
|
221
220
|
- spec/taxamatch_wrapper_spec.rb
|
221
|
+
- spec/top_node_spec.rb
|
222
222
|
has_rdoc: true
|
223
223
|
homepage: http://github.com/GlobalNamesArchitecture/family-reunion
|
224
224
|
licenses:
|
@@ -233,7 +233,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
233
233
|
requirements:
|
234
234
|
- - ">="
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
hash: -
|
236
|
+
hash: -4529932705422287836
|
237
237
|
segments:
|
238
238
|
- 0
|
239
239
|
version: "0"
|