pub struct Assessor<Query, Candidate> {
pub resemblers: Vec<Box<dyn Resemblance<Query, Candidate>>>,
pub influences: Vec<Influence>,
pub floor: f64,
}Fields§
§resemblers: Vec<Box<dyn Resemblance<Query, Candidate>>>§influences: Vec<Influence>§floor: f64Implementations§
Source§impl<Query, Candidate> Assessor<Query, Candidate>
impl<Query, Candidate> Assessor<Query, Candidate>
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/string.rs (line 44)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 24)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 62)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Sourcepub fn floor(self, floor: f64) -> Self
pub fn floor(self, floor: f64) -> Self
Examples found in repository?
examples/string.rs (line 46)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 26)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 65)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Sourcepub fn with<R: Resemblance<Query, Candidate> + 'static>(
self,
resembler: R,
magnitude: f64,
) -> Self
pub fn with<R: Resemblance<Query, Candidate> + 'static>( self, resembler: R, magnitude: f64, ) -> Self
Examples found in repository?
examples/string.rs (line 45)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 25)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 63)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Source§impl<Query, Candidate> Assessor<Query, Candidate>
impl<Query, Candidate> Assessor<Query, Candidate>
pub fn resemblance(&self, query: &Query, candidate: &Candidate) -> f64
pub fn perfect(&self, query: &Query, candidate: &Candidate) -> bool
Sourcepub fn disposition(&self, query: &Query, candidate: &Candidate) -> Disposition
pub fn disposition(&self, query: &Query, candidate: &Candidate) -> Disposition
Examples found in repository?
examples/string.rs (line 63)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 42)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 79)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}pub fn facets(&self, query: &Query, candidate: &Candidate) -> Vec<Facet>
Sourcepub fn verdict(
&self,
query: &Query,
candidate: &Candidate,
) -> Verdict<Query, Candidate>
pub fn verdict( &self, query: &Query, candidate: &Candidate, ) -> Verdict<Query, Candidate>
Examples found in repository?
examples/string.rs (line 73)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 60)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 73)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Sourcepub fn viable(&self, query: &Query, candidate: &Candidate) -> bool
pub fn viable(&self, query: &Query, candidate: &Candidate) -> bool
Examples found in repository?
examples/analysis.rs (line 78)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Sourcepub fn champion(
&self,
query: &Query,
candidates: &[Candidate],
) -> Option<Verdict<Query, Candidate>>
pub fn champion( &self, query: &Query, candidates: &[Candidate], ) -> Option<Verdict<Query, Candidate>>
Examples found in repository?
examples/string.rs (line 58)
43fn main() {
44 let assessor = Assessor::<String, String>::new()
45 .with(LevenshteinResembler, 1.0)
46 .floor(0.6);
47
48 let query = String::from("hello");
49 let candidates = vec![
50 String::from("hello"),
51 String::from("helo"),
52 String::from("world"),
53 ];
54
55 println!("Basic String Matching Example");
56 println!("============================");
57
58 if let Some(verdict) = assessor.champion(&query, &candidates) {
59 println!("Champion found:");
60 println!(" Resemblance: {:.2}", verdict.resemblance);
61 println!(" Candidate: {}", verdict.candidate);
62 println!(" Perfect: {}", verdict.perfect);
63 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
64 } else {
65 println!("No viable candidate found above floor threshold");
66 }
67
68 // Show all candidates for comparison
69 println!("\nAll Candidates Analysis");
70 println!("======================");
71
72 for candidate in &candidates {
73 let verdict = assessor.verdict(&query, candidate);
74 let disposition = assessor.disposition(&query, candidate);
75 println!("'{}': resemblance={:.2}, disposition={:?}",
76 candidate, verdict.resemblance, disposition);
77 }
78}More examples
examples/numeric.rs (line 49)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}examples/analysis.rs (line 105)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}Sourcepub fn shortlist(
&self,
query: &Query,
candidates: &[Candidate],
) -> Vec<Verdict<Query, Candidate>>
pub fn shortlist( &self, query: &Query, candidates: &[Candidate], ) -> Vec<Verdict<Query, Candidate>>
Examples found in repository?
examples/numeric.rs (line 34)
23fn main() {
24 let assessor = Assessor::<f64, f64>::new()
25 .with(NumericResembler, 1.0)
26 .floor(0.8);
27
28 let query = 42.0;
29 let candidates = vec![40.0, 45.0, 100.0];
30
31 println!("Numeric Matching Example");
32 println!("=======================");
33
34 let shortlist = assessor.shortlist(&query, &candidates);
35 println!("Viable matches found: {}", shortlist.len());
36
37 for (i, verdict) in shortlist.iter().enumerate() {
38 println!("Match {}:", i + 1);
39 println!(" Resemblance: {:.2}", verdict.resemblance);
40 println!(" Candidate: {}", verdict.candidate);
41 println!(" Perfect: {}", verdict.perfect);
42 println!(" Disposition: {:?}", assessor.disposition(&query, &verdict.candidate));
43 }
44
45 // Show champion example
46 println!("\nChampion Selection");
47 println!("=================");
48
49 if let Some(champion) = assessor.champion(&query, &candidates) {
50 println!("Best candidate: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
51 } else {
52 println!("No viable candidates found");
53 }
54
55 // Show all candidates with their resemblance scores
56 println!("\nAll Candidates Analysis");
57 println!("======================");
58
59 for candidate in &candidates {
60 let verdict = assessor.verdict(&query, candidate);
61 println!("Candidate {}: resemblance={:.2}, disposition={:?}",
62 candidate, verdict.resemblance, assessor.disposition(&query, candidate));
63 }
64}More examples
examples/analysis.rs (line 113)
61fn main() {
62 let assessor = Assessor::<String, String>::new()
63 .with(LevenshteinResembler, 0.7)
64 .with(JaccardResembler, 0.3)
65 .floor(0.5);
66
67 let query = String::from("test");
68 let candidate = String::from("tent");
69
70 println!("Detailed Analysis Example");
71 println!("========================");
72
73 let verdict = assessor.verdict(&query, &candidate);
74 println!("Query: {}", verdict.query);
75 println!("Candidate: {}", verdict.candidate);
76 println!("Overall resemblance: {:.2}", verdict.resemblance);
77 println!("Perfect match: {}", verdict.perfect);
78 println!("Is viable: {}", assessor.viable(&query, &candidate));
79 println!("Disposition: {:?}", assessor.disposition(&query, &candidate));
80 println!("Individual resembler facets:");
81
82 // Get resembler names using Debug trait
83 let resembler_names: Vec<String> = assessor.resemblers.iter()
84 .map(|resembler| format!("{:?}", resembler))
85 .collect();
86
87 for (i, facet) in verdict.facets.iter().enumerate() {
88 println!(" Resembler {}: {}", i + 1, resembler_names[i]);
89 println!(" Raw resemblance: {:.2}", facet.resemblance);
90 println!(" Influence magnitude: {:.2}", facet.influence.magnitude);
91 println!(" Contribution: {:.2}", facet.contribution);
92 }
93
94 // Example of finding best match from multiple candidates
95 println!("\nBest Match Example");
96 println!("==================");
97
98 let candidates = vec![
99 String::from("tent"),
100 String::from("test"),
101 String::from("toast"),
102 String::from("rest"),
103 ];
104
105 if let Some(champion) = assessor.champion(&query, &candidates) {
106 println!("Champion: {} (resemblance: {:.2})", champion.candidate, champion.resemblance);
107 }
108
109 // Example of getting shortlist
110 println!("\nShortlist Example");
111 println!("=================");
112
113 let shortlist = assessor.shortlist(&query, &candidates);
114 for (i, verdict) in shortlist.iter().enumerate() {
115 println!("{}. {} (resemblance: {:.2})", i + 1, verdict.candidate, verdict.resemblance);
116 }
117}pub fn constrain( &self, query: &Query, candidates: &[Candidate], cap: usize, ) -> Vec<Verdict<Query, Candidate>>
Auto Trait Implementations§
impl<Query, Candidate> Freeze for Assessor<Query, Candidate>
impl<Query, Candidate> !RefUnwindSafe for Assessor<Query, Candidate>
impl<Query, Candidate> !Send for Assessor<Query, Candidate>
impl<Query, Candidate> !Sync for Assessor<Query, Candidate>
impl<Query, Candidate> Unpin for Assessor<Query, Candidate>
impl<Query, Candidate> !UnwindSafe for Assessor<Query, Candidate>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more