diff options
| author | metamuffin <metamuffin@disroot.org> | 2026-03-11 16:44:29 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2026-03-11 16:44:29 +0100 |
| commit | d79e74cc8ece8a0f63164fb458b99eea38d02525 (patch) | |
| tree | 9dcd1ea83aa95e5dcd06089b296ba74a5d58bbe1 | |
| parent | abdcefb94b561c949ac5144d8fbe1100cc0fe58a (diff) | |
| download | jellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar jellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar.bz2 jellything-d79e74cc8ece8a0f63164fb458b99eea38d02525.tar.zst | |
fix text search prefix bug
| -rw-r--r-- | database/src/kv/index.rs | 4 | ||||
| -rw-r--r-- | stream/src/cues.rs | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/database/src/kv/index.rs b/database/src/kv/index.rs index e4f707c..591aeee 100644 --- a/database/src/kv/index.rs +++ b/database/src/kv/index.rs @@ -69,11 +69,13 @@ pub fn update_index( for tok in &tokens { for mut k in ks.clone() { k.push(0); + k.extend((tok.len() as u32).to_be_bytes()); k.extend(tok.as_bytes()); index_counter(txn, &k, remove)?; } for mut k in ks.clone() { k.push(1); + k.extend((tok.len() as u32).to_be_bytes()); k.extend(tok.as_bytes()); k.extend(row.to_be_bytes()); index_marker(txn, &k, remove)?; @@ -196,6 +198,7 @@ pub fn iter_index<'a>( } let mut min_token_prefix = prefix.clone(); min_token_prefix.push(1); + min_token_prefix.extend((min_tok.len() as u32).to_be_bytes()); min_token_prefix.extend(min_tok.as_bytes()); Box::new( PrefixIterator { @@ -211,6 +214,7 @@ pub fn iter_index<'a>( for token in &search_tokens { let mut k = prefix.clone(); k.push(1); + k.extend((token.len() as u32).to_be_bytes()); k.extend(token.as_bytes()); k.extend(rn.to_be_bytes()); let v = match txn.get(&k) { diff --git a/stream/src/cues.rs b/stream/src/cues.rs index d11e2d7..b48683d 100644 --- a/stream/src/cues.rs +++ b/stream/src/cues.rs @@ -7,6 +7,7 @@ use anyhow::{Result, anyhow}; use jellycache::{Cache, HashKey}; use jellyremuxer::{demuxers::create_demuxer_autodetect, matroska::TrackType}; +use log::info; use serde::{Deserialize, Serialize}; use std::{collections::BTreeMap, fs::File, path::Path, sync::Arc}; @@ -33,6 +34,7 @@ pub fn generate_cues(cache: &Cache, path: &Path) -> Result<Arc<StatsAndCues>> { cache.cache_memory( &format!("media/generated-cues-v2/{}.json", HashKey(path)), move || { + info!("generating cues for {path:?}"); let media = File::open(path)?; let mut media = create_demuxer_autodetect(Box::new(media))? .ok_or(anyhow!("media format unknown"))?; @@ -73,7 +75,7 @@ pub fn generate_cues(cache: &Cache, path: &Path) -> Result<Arc<StatsAndCues>> { .clusters += 1; } } - + info!("writing {} cues", cues.len()); Ok(StatsAndCues { stats, cues }) }, ) |