Skip to content

implement extraction of query ngrams#139

Open
aneubeck wants to merge 6 commits into
mainfrom
aneubeck/querygrams
Open

implement extraction of query ngrams#139
aneubeck wants to merge 6 commits into
mainfrom
aneubeck/querygrams

Conversation

@aneubeck

Copy link
Copy Markdown
Collaborator

This is the query part which needs to be integrated into blackbird next.

@aneubeck
aneubeck requested a review from a team as a code owner July 17, 2026 10:19
Copilot AI review requested due to automatic review settings July 17, 2026 10:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds streaming query-time sparse n-gram extraction for future Blackbird integration.

Changes:

  • Introduces cloneable, drainable QueryGrams state with case folding and tests.
  • Adds packed-window n-gram construction.
  • Adds end indices to existing extractors and updates documentation and benchmarks.
Show a summary per file
File Description
crates/sparse-ngrams/src/query.rs Implements streaming query extraction and tests.
crates/sparse-ngrams/src/ngram.rs Adds masked-window construction.
crates/sparse-ngrams/src/lib.rs Exports QueryGrams.
crates/sparse-ngrams/src/extract.rs Adds callback end indices.
crates/sparse-ngrams/README.md Updates callback example.
crates/sparse-ngrams/Cargo.toml Adds casefold.
crates/sparse-ngrams/benchmarks/performance.rs Updates benchmark callbacks.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 7/7 changed files
  • Comments generated: 6
  • Review effort level: Medium

Comment thread crates/sparse-ngrams/src/query.rs
Comment thread crates/sparse-ngrams/src/query.rs Outdated
/// assert!(count > 0);
/// ```
pub fn collect_sparse_grams_deque(content: &[u8], mut emit: impl FnMut(NGram)) {
pub fn collect_sparse_grams_deque(content: &[u8], mut emit: impl FnMut(NGram, u32)) {
/// candidates are exactly the positions where a backward scan hits a new suffix minimum, so a
/// fixed-size ring of recent priorities replaces the monotone deque.
pub fn collect_sparse_grams_scan(content: &[u8], mut emit: impl FnMut(NGram)) {
pub fn collect_sparse_grams_scan(content: &[u8], mut emit: impl FnMut(NGram, u32)) {
Comment thread crates/sparse-ngrams/Cargo.toml Outdated
serde = ["dep:serde"]

[dependencies]
casefold = { path = "../casefold" }
Comment thread crates/sparse-ngrams/src/query.rs Outdated
aneubeck and others added 5 commits July 17, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants