Add telemetry

This commit is contained in:
ManyTheFish 2023-07-10 13:12:12 +02:00
parent 0c8dbf6fa6
commit c30a14cb97

View File

@ -574,6 +574,10 @@ pub struct SearchAggregator {
filter_total_number_of_criteria: usize, filter_total_number_of_criteria: usize,
used_syntax: HashMap<String, usize>, used_syntax: HashMap<String, usize>,
// attributes_to_search_on
// every time a search is done using attributes_to_search_on
attributes_to_search_on_total_number_of_use: usize,
// q // q
// The maximum number of terms in a q request // The maximum number of terms in a q request
max_terms_number: usize, max_terms_number: usize,
@ -647,6 +651,11 @@ impl SearchAggregator {
ret.filter_sum_of_criteria_terms = RE.split(&stringified_filters).count(); ret.filter_sum_of_criteria_terms = RE.split(&stringified_filters).count();
} }
// attributes_to_search_on
if let Some(_) = query.attributes_to_search_on {
ret.attributes_to_search_on_total_number_of_use = 1;
}
if let Some(ref q) = query.q { if let Some(ref q) = query.q {
ret.max_terms_number = q.split_whitespace().count(); ret.max_terms_number = q.split_whitespace().count();
} }
@ -720,6 +729,11 @@ impl SearchAggregator {
let used_syntax = self.used_syntax.entry(key).or_insert(0); let used_syntax = self.used_syntax.entry(key).or_insert(0);
*used_syntax = used_syntax.saturating_add(value); *used_syntax = used_syntax.saturating_add(value);
} }
// attributes_to_search_on
self.attributes_to_search_on_total_number_of_use +=
other.attributes_to_search_on_total_number_of_use;
// q // q
self.max_terms_number = self.max_terms_number.max(other.max_terms_number); self.max_terms_number = self.max_terms_number.max(other.max_terms_number);
@ -786,6 +800,9 @@ impl SearchAggregator {
"avg_criteria_number": format!("{:.2}", self.filter_sum_of_criteria_terms as f64 / self.filter_total_number_of_criteria as f64), "avg_criteria_number": format!("{:.2}", self.filter_sum_of_criteria_terms as f64 / self.filter_total_number_of_criteria as f64),
"most_used_syntax": self.used_syntax.iter().max_by_key(|(_, v)| *v).map(|(k, _)| json!(k)).unwrap_or_else(|| json!(null)), "most_used_syntax": self.used_syntax.iter().max_by_key(|(_, v)| *v).map(|(k, _)| json!(k)).unwrap_or_else(|| json!(null)),
}, },
"attributes_to_search_on": {
"total_number_of_use": self.attributes_to_search_on_total_number_of_use,
},
"q": { "q": {
"max_terms_number": self.max_terms_number, "max_terms_number": self.max_terms_number,
}, },