mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 04:17:10 +02:00
Use the new Lru
This commit is contained in:
parent
759b9b1546
commit
86d5e6d9ff
7 changed files with 11 additions and 42 deletions
|
@ -2,16 +2,16 @@ use std::mem;
|
|||
use std::num::NonZeroUsize;
|
||||
|
||||
use grenad::{MergeFunction, Sorter};
|
||||
use lru::LruCache;
|
||||
use roaring::RoaringBitmap;
|
||||
use smallvec::SmallVec;
|
||||
|
||||
use super::lru::Lru;
|
||||
use crate::update::del_add::{DelAdd, KvWriterDelAdd};
|
||||
use crate::CboRoaringBitmapCodec;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct CboCachedSorter<MF> {
|
||||
cache: lru::LruCache<SmallVec<[u8; 20]>, DelAddRoaringBitmap>,
|
||||
cache: Lru<SmallVec<[u8; 20]>, DelAddRoaringBitmap>,
|
||||
sorter: Sorter<MF>,
|
||||
deladd_buffer: Vec<u8>,
|
||||
cbo_buffer: Vec<u8>,
|
||||
|
@ -22,7 +22,7 @@ pub struct CboCachedSorter<MF> {
|
|||
impl<MF> CboCachedSorter<MF> {
|
||||
pub fn new(cap: NonZeroUsize, sorter: Sorter<MF>) -> Self {
|
||||
CboCachedSorter {
|
||||
cache: lru::LruCache::new(cap),
|
||||
cache: Lru::new(cap),
|
||||
sorter,
|
||||
deladd_buffer: Vec::new(),
|
||||
cbo_buffer: Vec::new(),
|
||||
|
@ -171,7 +171,7 @@ impl<MF: MergeFunction> CboCachedSorter<MF> {
|
|||
}
|
||||
|
||||
pub fn into_sorter(mut self) -> grenad::Result<Sorter<MF>, MF::Error> {
|
||||
let default_arc = LruCache::new(NonZeroUsize::MIN);
|
||||
let default_arc = Lru::new(NonZeroUsize::MIN);
|
||||
for (key, deladd) in mem::replace(&mut self.cache, default_arc) {
|
||||
self.write_entry(key, deladd)?;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ use std::num::NonZeroUsize;
|
|||
use hashbrown::hash_map::{DefaultHashBuilder, Entry};
|
||||
use hashbrown::HashMap;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Lru<K, V, S = DefaultHashBuilder> {
|
||||
lookup: HashMap<K, usize, S>,
|
||||
storage: FixedSizeList<LruNode<K, V>>,
|
||||
|
@ -104,17 +105,20 @@ impl<K, V> Iterator for IntoIter<K, V> {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct LruNode<K, V> {
|
||||
key: K,
|
||||
value: V,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct FixedSizeListNode<T> {
|
||||
prev: usize,
|
||||
next: usize,
|
||||
data: T,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct FixedSizeList<T> {
|
||||
nodes: Box<[Option<FixedSizeListNode<T>>]>,
|
||||
// An un-ordered set of indices that are not in use in `nodes`.
|
|
@ -1,5 +1,6 @@
|
|||
mod cache;
|
||||
mod faceted;
|
||||
mod lru;
|
||||
mod searchable;
|
||||
|
||||
use std::fs::File;
|
||||
|
@ -9,12 +10,9 @@ use grenad::Merger;
|
|||
use rayon::iter::IntoParallelIterator;
|
||||
pub use searchable::*;
|
||||
|
||||
use crate::{
|
||||
update::{GrenadParameters, MergeDeladdCboRoaringBitmaps},
|
||||
GlobalFieldsIdsMap, Index, Result,
|
||||
};
|
||||
|
||||
use super::DocumentChange;
|
||||
use crate::update::{GrenadParameters, MergeDeladdCboRoaringBitmaps};
|
||||
use crate::{GlobalFieldsIdsMap, Index, Result};
|
||||
|
||||
pub trait DocidsExtractor {
|
||||
fn run_extraction(
|
||||
|
|
|
@ -10,7 +10,6 @@ mod document_change;
|
|||
mod extract;
|
||||
pub mod indexer;
|
||||
mod items_pool;
|
||||
mod lru;
|
||||
mod merger;
|
||||
mod top_level_map;
|
||||
mod word_fst_builder;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue