libmotiva 0.1.0

Sanctioned entities matching utilities
Documentation
#![allow(unexpected_cfgs)]

mod catalog;
mod error;
mod index;
mod matching;
mod model;
mod motiva;
mod schemas;
mod scoring;

#[cfg(any(test, feature = "benchmarks"))]
mod tests;

pub(crate) fn init() {
  let _ = *crate::schemas::SCHEMAS;
  let _ = *crate::matching::replacers::company_types::ORG_TYPES;
  let _ = *crate::matching::replacers::addresses::ADDRESS_FORMS;
  let _ = *crate::matching::replacers::ordinals::ORDINALS;
}

pub mod prelude {
  pub use crate::motiva::{GetEntityBehavior, Motiva};

  pub use crate::error::MotivaError;
  pub use crate::index::{
    EntityHandle, IndexProvider,
    elastic::{ElasticsearchProvider, builder::EsAuthMethod},
  };
  pub use crate::matching::{Algorithm, MatchParams, MatchingAlgorithm, logic_v1::LogicV1, name_based::NameBased, name_qualified::NameQualified};
  pub use crate::model::{Entity, HasProperties, SearchEntity};
}

pub use crate::index::mock::MockedElasticsearch;

#[cfg(test)]
mod testing {
  use crate::{
    matching::replacers::{addresses::ADDRESS_FORMS, company_types::ORG_TYPES, ordinals::ORDINALS},
    schemas::SCHEMAS,
  };

  #[test]
  fn initialize_data_structures() {
    super::init();

    assert!(SCHEMAS.len() > 50);
    assert!(ORG_TYPES.1.len() > 1000);
    assert!(ORDINALS.1.len() > 4000);
    assert!(ADDRESS_FORMS.1.len() > 300);

    assert_eq!(ORG_TYPES.0.patterns_len(), ORG_TYPES.1.len());
    assert_eq!(ORDINALS.0.patterns_len(), ORDINALS.1.len());
    assert_eq!(ADDRESS_FORMS.0.patterns_len(), ADDRESS_FORMS.1.len());
  }
}