Skip to content

Commit 02f3c8c

Browse files
committed
Fix default sort again
1 parent 52240b1 commit 02f3c8c

1 file changed

Lines changed: 61 additions & 3 deletions

File tree

quickwit/quickwit-search/src/collector.rs

Lines changed: 61 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -275,12 +275,12 @@ impl SortingFieldExtractorComponent {
275275
internal_repr: InternalValueRepr<V>,
276276
order: SortOrder,
277277
) -> tantivy::Result<Option<SortByValue>> {
278-
let Some((col_idx, val_as_u64)) = internal_repr.decode(order) else {
279-
return Ok(Some(SortByValue { sort_value: None }));
280-
};
281278
if V::is_elided() {
282279
return Ok(None);
283280
}
281+
let Some((col_idx, val_as_u64)) = internal_repr.decode(order) else {
282+
return Ok(Some(SortByValue { sort_value: None }));
283+
};
284284
let sort_value = match self {
285285
SortingFieldExtractorComponent::FastField(FastFieldExtractor {
286286
sort_columns, ..
@@ -2198,6 +2198,64 @@ mod tests {
21982198
}
21992199
}
22002200

2201+
#[test]
2202+
fn test_single_split_default_sort() {
2203+
let dataset: Vec<serde_json::Value> = vec![
2204+
serde_json::json!({"sort_u64_1": 15}), // doc 0
2205+
serde_json::json!({"sort_u64_1": 13}), // doc 1
2206+
serde_json::json!({"sort_u64_1": 10}), // doc 2
2207+
serde_json::json!({"sort_u64_1": 12}), // doc 3
2208+
serde_json::json!({"sort_u64_1": 9}), // doc 4
2209+
];
2210+
2211+
let index = make_index(&dataset);
2212+
let reader = index.reader().unwrap();
2213+
let searcher = reader.searcher();
2214+
2215+
let request = SearchRequest {
2216+
max_hits: 3,
2217+
sort_fields: vec![],
2218+
search_after: None,
2219+
..SearchRequest::default()
2220+
};
2221+
let collector = super::make_collector_for_split(
2222+
"fake_split_id".to_string(),
2223+
&request,
2224+
Default::default(),
2225+
)
2226+
.unwrap();
2227+
let res = searcher
2228+
.search(&tantivy::query::AllQuery, &collector)
2229+
.unwrap();
2230+
// assert the exact hits where in other tests we mostly focus on the order
2231+
assert_eq!(
2232+
res.partial_hits,
2233+
vec![
2234+
PartialHit {
2235+
split_id: "fake_split_id".to_string(),
2236+
segment_ord: 0,
2237+
doc_id: 4,
2238+
sort_value: None,
2239+
sort_value2: None,
2240+
},
2241+
PartialHit {
2242+
split_id: "fake_split_id".to_string(),
2243+
segment_ord: 0,
2244+
doc_id: 3,
2245+
sort_value: None,
2246+
sort_value2: None,
2247+
},
2248+
PartialHit {
2249+
split_id: "fake_split_id".to_string(),
2250+
segment_ord: 0,
2251+
doc_id: 2,
2252+
sort_value: None,
2253+
sort_value2: None,
2254+
},
2255+
]
2256+
);
2257+
}
2258+
22012259
/// Merge intermediate results, asserting that both the regular and
22022260
/// incremental merge produce the same output.
22032261
fn merge_on_both_collectors(

0 commit comments

Comments
 (0)