mirror of
https://github.com/meilisearch/meilisearch.git
synced 2024-11-26 12:05:05 +08:00
Prefix Redis keys to avoid false negative excessive writes
This commit is contained in:
parent
0e08906fcb
commit
16b4545d23
@ -11,6 +11,7 @@ use crate::CboRoaringBitmapCodec;
|
||||
|
||||
pub struct SorterCacheDelAddCboRoaringBitmap<const N: usize, MF> {
|
||||
cache: LruCache<SmallVec<[u8; N]>, DelAddRoaringBitmap>,
|
||||
prefix: &'static [u8; 3],
|
||||
sorter: grenad::Sorter<MF>,
|
||||
deladd_buffer: Vec<u8>,
|
||||
cbo_buffer: Vec<u8>,
|
||||
@ -18,9 +19,15 @@ pub struct SorterCacheDelAddCboRoaringBitmap<const N: usize, MF> {
|
||||
}
|
||||
|
||||
impl<const N: usize, MF> SorterCacheDelAddCboRoaringBitmap<N, MF> {
|
||||
pub fn new(cap: NonZeroUsize, sorter: grenad::Sorter<MF>, conn: redis::Connection) -> Self {
|
||||
pub fn new(
|
||||
cap: NonZeroUsize,
|
||||
sorter: grenad::Sorter<MF>,
|
||||
prefix: &'static [u8; 3],
|
||||
conn: redis::Connection,
|
||||
) -> Self {
|
||||
SorterCacheDelAddCboRoaringBitmap {
|
||||
cache: LruCache::new(cap),
|
||||
prefix,
|
||||
sorter,
|
||||
deladd_buffer: Vec::new(),
|
||||
cbo_buffer: Vec::new(),
|
||||
@ -136,7 +143,10 @@ where
|
||||
}
|
||||
DelAddRoaringBitmap { del: None, add: None } => return Ok(()),
|
||||
}
|
||||
redis::cmd("INCR").arg(key.as_ref()).query::<usize>(&mut self.conn).unwrap();
|
||||
self.cbo_buffer.clear();
|
||||
self.cbo_buffer.extend_from_slice(self.prefix);
|
||||
self.cbo_buffer.extend_from_slice(&key);
|
||||
redis::cmd("INCR").arg(&self.cbo_buffer).query::<usize>(&mut self.conn).unwrap();
|
||||
self.sorter.insert(key, value_writer.into_inner().unwrap())
|
||||
}
|
||||
|
||||
|
@ -40,6 +40,7 @@ pub fn extract_facet_number_docids<R: io::Read + io::Seek>(
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(20).unwrap(),
|
||||
facet_number_docids_sorter,
|
||||
b"fnd",
|
||||
super::REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -48,6 +48,7 @@ pub fn extract_facet_string_docids<R: io::Read + io::Seek>(
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(200).unwrap(),
|
||||
facet_string_docids_sorter,
|
||||
b"fsd",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -43,6 +43,7 @@ pub fn extract_fid_word_count_docids<R: io::Read + io::Seek>(
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(300).unwrap(),
|
||||
fid_word_count_docids_sorter,
|
||||
b"fwc",
|
||||
super::REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -52,6 +52,7 @@ pub fn extract_word_docids<R: io::Read + io::Seek>(
|
||||
let mut cached_word_fid_docids_sorter = SorterCacheDelAddCboRoaringBitmap::<20, _>::new(
|
||||
NonZeroUsize::new(300).unwrap(),
|
||||
word_fid_docids_sorter,
|
||||
b"wfd",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
@ -112,6 +113,7 @@ pub fn extract_word_docids<R: io::Read + io::Seek>(
|
||||
let mut cached_word_docids_sorter = SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(100).unwrap(),
|
||||
word_docids_sorter,
|
||||
b"wdi",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
@ -126,6 +128,7 @@ pub fn extract_word_docids<R: io::Read + io::Seek>(
|
||||
let mut cached_exact_word_docids_sorter = SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(100).unwrap(),
|
||||
exact_word_docids_sorter,
|
||||
b"ewd",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -55,6 +55,7 @@ pub fn extract_word_pair_proximity_docids<R: io::Read + io::Seek>(
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(100).unwrap(),
|
||||
sorter,
|
||||
b"wpp",
|
||||
super::REDIS_CLIENT.get_connection().unwrap(),
|
||||
)
|
||||
})
|
||||
|
@ -41,6 +41,7 @@ pub fn extract_word_position_docids<R: io::Read + io::Seek>(
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(300).unwrap(),
|
||||
word_position_docids_sorter,
|
||||
b"wpd",
|
||||
super::REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -68,6 +68,7 @@ impl<'t, 'i> WordPrefixDocids<'t, 'i> {
|
||||
let mut cached_prefix_docids_sorter = SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(200).unwrap(),
|
||||
prefix_docids_sorter,
|
||||
b"pdi",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
@ -73,6 +73,7 @@ impl<'t, 'i> WordPrefixIntegerDocids<'t, 'i> {
|
||||
SorterCacheDelAddCboRoaringBitmap::<20, MergeFn>::new(
|
||||
NonZeroUsize::new(200).unwrap(),
|
||||
prefix_integer_docids_sorter,
|
||||
b"pid",
|
||||
REDIS_CLIENT.get_connection().unwrap(),
|
||||
);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user