Rename user ids into external docids

This commit is contained in:
Kerollmops
2020-05-20 14:49:41 +02:00
parent 7bbb101555
commit a60e3fb1cb
5 changed files with 63 additions and 63 deletions

View File

@ -7,8 +7,8 @@ pub fn apply_clear_all(
index: &store::Index,
) -> MResult<()> {
index.main.put_words_fst(writer, &fst::Set::default())?;
index.main.put_user_ids(writer, &fst::Map::default())?;
index.main.put_internal_ids(writer, &sdset::SetBuf::default())?;
index.main.put_external_docids(writer, &fst::Map::default())?;
index.main.put_internal_docids(writer, &sdset::SetBuf::default())?;
index.main.put_ranked_map(writer, &RankedMap::default())?;
index.main.put_number_of_documents(writer, |_| 0)?;
index.documents_fields.clear(writer)?;

View File

@ -150,8 +150,8 @@ pub fn apply_addition<'a, 'b>(
partial: bool
) -> MResult<()> {
let mut documents_additions = HashMap::new();
let mut new_user_ids = BTreeMap::new();
let mut new_internal_ids = Vec::with_capacity(new_documents.len());
let mut new_external_docids = BTreeMap::new();
let mut new_internal_docids = Vec::with_capacity(new_documents.len());
let mut schema = match index.main.schema(writer)? {
Some(schema) => schema,
@ -159,17 +159,17 @@ pub fn apply_addition<'a, 'b>(
};
// Retrieve the documents ids related structures
let user_ids = index.main.user_ids(writer)?;
let internal_ids = index.main.internal_ids(writer)?;
let mut available_ids = DiscoverIds::new(&internal_ids);
let external_docids = index.main.external_docids(writer)?;
let internal_docids = index.main.internal_docids(writer)?;
let mut available_ids = DiscoverIds::new(&internal_docids);
let primary_key = schema.primary_key().ok_or(Error::MissingPrimaryKey)?;
// 1. store documents ids for future deletion
for mut document in new_documents {
let (document_id, userid) = extract_document_id(&primary_key, &document, &user_ids, &mut available_ids)?;
new_user_ids.insert(userid, document_id.0);
new_internal_ids.push(document_id);
let (document_id, userid) = extract_document_id(&primary_key, &document, &external_docids, &mut available_ids)?;
new_external_docids.insert(userid, document_id.0);
new_internal_docids.push(document_id);
if partial {
let mut deserializer = Deserializer {
@ -192,7 +192,7 @@ pub fn apply_addition<'a, 'b>(
// 2. remove the documents postings lists
let number_of_inserted_documents = documents_additions.len();
let documents_ids = new_user_ids.iter().map(|(userid, _)| userid.clone()).collect();
let documents_ids = new_external_docids.iter().map(|(id, _)| id.clone()).collect();
apply_documents_deletion(writer, index, documents_ids)?;
let mut ranked_map = match index.main.ranked_map(writer)? {
@ -242,10 +242,10 @@ pub fn apply_addition<'a, 'b>(
index.main.put_schema(writer, &schema)?;
let new_user_ids = fst::Map::from_iter(new_user_ids.iter().map(|(u, i)| (u, *i as u64)))?;
let new_internal_ids = sdset::SetBuf::from_dirty(new_internal_ids);
index.main.merge_user_ids(writer, &new_user_ids)?;
index.main.merge_internal_ids(writer, &new_internal_ids)?;
let new_external_docids = fst::Map::from_iter(new_external_docids.iter().map(|(u, i)| (u, *i as u64)))?;
let new_internal_docids = sdset::SetBuf::from_dirty(new_internal_docids);
index.main.merge_external_docids(writer, &new_external_docids)?;
index.main.merge_internal_docids(writer, &new_internal_docids)?;
Ok(())
}

View File

@ -31,7 +31,7 @@ impl DocumentsDeletion {
}
}
pub fn delete_document_by_user_id(&mut self, document_id: String) {
pub fn delete_document_by_external_docid(&mut self, document_id: String) {
self.documents.push(document_id);
}
@ -73,19 +73,19 @@ pub fn apply_documents_deletion(
deletion: Vec<String>,
) -> MResult<()>
{
let (user_ids, internal_ids) = {
let new_user_ids = SetBuf::from_dirty(deletion);
let mut internal_ids = Vec::new();
let (external_docids, internal_docids) = {
let new_external_docids = SetBuf::from_dirty(deletion);
let mut internal_docids = Vec::new();
let user_ids = index.main.user_ids(writer)?;
for userid in new_user_ids.as_slice() {
let user_ids = index.main.external_docids(writer)?;
for userid in new_external_docids.as_slice() {
if let Some(id) = user_ids.get(userid) {
internal_ids.push(DocumentId(id as u32));
internal_docids.push(DocumentId(id as u32));
}
}
let new_user_ids = fst::Map::from_iter(new_user_ids.into_iter().map(|k| (k, 0))).unwrap();
(new_user_ids, SetBuf::from_dirty(internal_ids))
let new_external_docids = fst::Map::from_iter(new_external_docids.into_iter().map(|k| (k, 0))).unwrap();
(new_external_docids, SetBuf::from_dirty(internal_docids))
};
let schema = match index.main.schema(writer)? {
@ -100,7 +100,7 @@ pub fn apply_documents_deletion(
// facet filters deletion
if let Some(attributes_for_facetting) = index.main.attributes_for_faceting(writer)? {
let facet_map = facets::facet_map_from_docids(writer, &index, &internal_ids, &attributes_for_facetting)?;
let facet_map = facets::facet_map_from_docids(writer, &index, &internal_docids, &attributes_for_facetting)?;
index.facets.remove(writer, facet_map)?;
}
@ -108,7 +108,7 @@ pub fn apply_documents_deletion(
let ranked_fields = schema.ranked();
let mut words_document_ids = HashMap::new();
for id in internal_ids.iter().cloned() {
for id in internal_docids.iter().cloned() {
// remove all the ranked attributes from the ranked_map
for ranked_attr in ranked_fields {
ranked_map.remove(id, *ranked_attr);
@ -179,8 +179,8 @@ pub fn apply_documents_deletion(
index.main.put_number_of_documents(writer, |old| old - deleted_documents_len)?;
// We apply the changes to the user and internal ids
index.main.remove_user_ids(writer, &user_ids)?;
index.main.remove_internal_ids(writer, &internal_ids)?;
index.main.remove_external_docids(writer, &external_docids)?;
index.main.remove_internal_docids(writer, &internal_docids)?;
compute_short_prefixes(writer, index)?;