Raise matching floor: boundary tokenizer, stemming/folding/stopwords, boosts, snippets, engine seam
This commit is contained in:
+13
-7
@@ -102,17 +102,23 @@ pub struct ResponseBody {
|
||||
pub fn build_response(
|
||||
qid: &str,
|
||||
hits: Vec<ResponseItem>,
|
||||
total: u64,
|
||||
total: Option<u64>,
|
||||
max_results: usize,
|
||||
) -> ResponseBody {
|
||||
let max_results = max_results.max(1);
|
||||
let mut results = hits;
|
||||
results.truncate(max_results);
|
||||
let more_available = total.saturating_sub(results.len() as u64);
|
||||
let (truncated, more_available) = match total {
|
||||
Some(total) => {
|
||||
let more = total.saturating_sub(results.len() as u64);
|
||||
(more > 0, more)
|
||||
}
|
||||
None => (true, 0),
|
||||
};
|
||||
ResponseBody {
|
||||
qid: qid.to_string(),
|
||||
results,
|
||||
truncated: more_available > 0,
|
||||
truncated,
|
||||
more_available,
|
||||
cursor: None,
|
||||
}
|
||||
@@ -153,24 +159,24 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn max_results_is_respected() {
|
||||
let response = build_response("q1", vec![item(1), item(2), item(3)], 10, 2);
|
||||
let response = build_response("q1", vec![item(1), item(2), item(3)], Some(10), 2);
|
||||
assert_eq!(response.results.len(), 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn truncation_is_honest() {
|
||||
let response = build_response("q1", vec![item(1), item(2), item(3)], 10, 2);
|
||||
let response = build_response("q1", vec![item(1), item(2), item(3)], Some(10), 2);
|
||||
assert!(response.truncated);
|
||||
assert_eq!(response.more_available, 8);
|
||||
|
||||
let response = build_response("q2", vec![item(1), item(2)], 2, 5);
|
||||
let response = build_response("q2", vec![item(1), item(2)], Some(2), 5);
|
||||
assert!(!response.truncated);
|
||||
assert_eq!(response.more_available, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn response_carries_no_scores() {
|
||||
let response = build_response("q1", vec![item(1)], 1, 5);
|
||||
let response = build_response("q1", vec![item(1)], Some(1), 5);
|
||||
let json = serde_json::to_string(&response).unwrap();
|
||||
assert!(!json.contains("score"));
|
||||
assert!(!json.contains("relevance"));
|
||||
|
||||
Reference in New Issue
Block a user