Add more tests and allow disabling of soft-deletion outside of tests

Also allow disabling soft-deletion in the IndexDocumentsConfig
This commit is contained in:
Loïc Lecrenier
2022-12-05 10:33:31 +01:00
parent d3731dda48
commit f2cf981641
89 changed files with 2171 additions and 54 deletions

View File

@ -88,6 +88,7 @@ pub struct IndexDocumentsConfig {
pub words_positions_level_group_size: Option<NonZeroU32>,
pub words_positions_min_level_size: Option<NonZeroU32>,
pub update_method: IndexDocumentsMethod,
pub disable_soft_deletion: bool,
pub autogenerate_docids: bool,
}
@ -331,6 +332,7 @@ where
// able to simply insert all the documents even if they already exist in the database.
if !replaced_documents_ids.is_empty() {
let mut deletion_builder = update::DeleteDocuments::new(self.wtxn, self.index)?;
deletion_builder.disable_soft_deletion(self.config.disable_soft_deletion);
debug!("documents to delete {:?}", replaced_documents_ids);
deletion_builder.delete_documents(&replaced_documents_ids);
let deleted_documents_count = deletion_builder.execute()?;
@ -906,6 +908,8 @@ mod tests {
{ "id": 42, "title": "The Hitchhiker's Guide to the Galaxy", "author": "Douglas Adams", "_geo": { "lat": 35, "lng": 23 } }
])).unwrap();
db_snap!(index, word_docids, "initial");
index.index_documents_config.update_method = IndexDocumentsMethod::UpdateDocuments;
index
@ -928,6 +932,9 @@ mod tests {
let count = index.all_documents(&rtxn).unwrap().count();
assert_eq!(count, 6);
db_snap!(index, word_docids, "updated");
db_snap!(index, soft_deleted_documents_ids, "updated", @"[0, 1, 4, ]");
drop(rtxn);
}

View File

@ -0,0 +1,54 @@
---
source: milli/src/update/index_documents/mod.rs
---
1 [2, ]
10.0 [1, ]
12 [0, ]
1344 [3, ]
2 [0, ]
23 [5, ]
25.99 [2, ]
3.5 [0, ]
35 [5, ]
4 [4, ]
42 [0, 5, ]
456 [1, ]
adams [5, ]
adventure [1, ]
alice [2, ]
and [0, 4, ]
antoine [1, ]
austin [0, ]
blood [4, ]
carroll [2, ]
de [1, ]
douglas [5, ]
exupery [1, ]
fantasy [2, 3, 4, ]
galaxy [5, ]
guide [5, ]
half [4, ]
harry [4, ]
hitchhiker' [5, ]
hobbit [3, ]
in [2, ]
j [3, 4, ]
jane [0, ]
k [4, ]
le [1, ]
lewis [2, ]
petit [1, ]
potter [4, ]
prejudice [0, ]
pride [0, ]
prince [1, 4, ]
r [3, ]
romance [0, ]
rowling [4, ]
s [5, ]
saint [1, ]
the [3, 4, 5, ]
to [5, ]
tolkien [3, ]
wonderland [2, ]

View File

@ -0,0 +1,4 @@
---
source: milli/src/update/index_documents/mod.rs
---
[0, 1, 4, ]

View File

@ -0,0 +1,58 @@
---
source: milli/src/update/index_documents/mod.rs
---
1 [2, ]
10.0 [1, 7, ]
12 [0, 8, ]
1344 [3, ]
1813 [8, ]
2 [0, 8, ]
23 [5, ]
25.99 [2, ]
3.5 [0, 8, ]
35 [5, ]
4 [4, 6, ]
42 [0, 5, 8, ]
456 [1, 7, ]
adams [5, ]
adventure [1, 7, ]
alice [2, ]
and [0, 4, 6, 8, ]
antoine [1, 7, ]
austen [8, ]
austin [0, ]
blood [4, 6, ]
carroll [2, ]
de [1, 7, ]
douglas [5, ]
exupery [1, 7, ]
fantasy [2, 3, 4, 6, ]
galaxy [5, ]
guide [5, ]
half [4, 6, ]
harry [4, 6, ]
hitchhiker' [5, ]
hobbit [3, ]
in [2, ]
j [3, 4, 6, 8, ]
jane [0, ]
k [4, 6, ]
le [1, ]
lewis [2, ]
little [7, ]
petit [1, ]
potter [4, 6, ]
prejudice [0, 8, ]
pride [0, 8, ]
prince [1, 4, 7, ]
princess [6, ]
r [3, ]
romance [0, 8, ]
rowling [4, 6, ]
s [5, ]
saint [1, 7, ]
the [3, 4, 5, 6, 7, ]
to [5, ]
tolkien [3, ]
wonderland [2, ]