Skip to content

Commit fcc038e

Browse files
committed
Sort search results
1 parent db8e5a8 commit fcc038e

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/InMemoryIndex.zig

+2
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,8 @@ pub fn search(self: *Self, hashes: []const u32, results: *SearchResults, deadlin
326326
}
327327
}
328328
}
329+
330+
results.sort();
329331
}
330332

331333
test "insert and search" {

src/common.zig

+26
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,33 @@ pub const SearchResults = struct {
9393
return self.results.get(doc_id);
9494
}
9595

96+
pub fn sort(self: *SearchResults) void {
97+
const Ctx = struct {
98+
values: []SearchResult,
99+
pub fn lessThan(ctx: @This(), a: usize, b: usize) bool {
100+
return SearchResult.cmp({}, ctx.values[a], ctx.values[b]);
101+
}
102+
};
103+
self.results.sort(Ctx{ .values = self.results.values() });
104+
}
105+
96106
pub fn values(self: *SearchResults) []SearchResult {
97107
return self.results.values();
98108
}
99109
};
110+
111+
test "sort search results" {
112+
var results = SearchResults.init(testing.allocator);
113+
defer results.deinit();
114+
115+
try results.incr(1, 1);
116+
try results.incr(2, 1);
117+
try results.incr(2, 1);
118+
119+
results.sort();
120+
121+
try testing.expectEqualSlices(SearchResult, &[_]SearchResult{
122+
SearchResult{ .docId = 2, .score = 2, .version = 1 },
123+
SearchResult{ .docId = 1, .score = 1, .version = 1 },
124+
}, results.values());
125+
}

0 commit comments

Comments
 (0)