/// <summary> /// Create a matcher based on the DataCharType (dataChars). /// </summary> /// <param name="dataChars">type of charaters in the data for the column. if data is not defined type will attempt to convert</param> /// <param name="lookupTypes">supported matcher operations</param> /// <param name="extendedStorageUsage">what values can be cached in ExtendedStorageRow</param> /// <param name="sourceColumn">dataColumn for the data</param> /// <returns></returns> public static ColumnFuzzyMatcher CreateFuzzyMatcher(MatcherCreateArgs createArgs) { switch (createArgs.DataChars) { case DataCharType.DigitsOnly: if (createArgs.NumberCharatersInData < 10) { return(new NineDigitOrLessMatcher(createArgs)); } else if (createArgs.NumberCharatersInData < 17) { return(new SixteenOrLessDigitOrLessMatcher(createArgs)); } else if (createArgs.NumberCharatersInData < 18) { return(new SixteenOrLessDigitOrLessMatcher(createArgs)); } return(new StringTo10Matcher(createArgs)); //should not be to 10 but ok for now case DataCharType.String: return(new StringTo10Matcher(createArgs)); } return(null); }
public DateStorage(MatcherCreateArgs createArgs) : base(createArgs) { }
protected override IFuzzyMatchStorage CreateStorage(MatcherCreateArgs createArgs) { return(new DateStorage(createArgs)); }
public DateMatcher(MatcherCreateArgs createArgs) : base(createArgs) { }
//protected static readonly UInt32[] probablemaskedDataMask = new UInt32[] //{ /* * 999919999 = MOD(MOD(S1, 10000)+(ROUND((S1/100000),0) *100000), 1000000000) * 119999999 = MOD(S2,10000000) * 991199999 = MOD(S3, 100000)+(ROUND((S3/10000000),0) *10000000) * 999991199 = MOD(S4, 100) +(ROUND((S4/10000),0) *10000) * 999999911 = ROUND(S5/100,0)*100 * 991119999 = MOD(S6, 10000)+(ROUND((S6/10000000),0) *10000000) * 999911199 = MOD(S7, 100)+(ROUND((S7/100000),0) *100000) * 111199999 = MOD(S8,100000) * 119991199 = MOD(S9, 100) + ( ROUND((MOD(S9, 10000000))/10000, 0) *10000) * 119999911 = ROUND((MOD(S10, 10000000))/100,0)*100 * 991199911 = (MOD(ROUND(S11/100,0), 1000) *100) +(ROUND((S11/10000000),0) *10000000) * 999991111 = ROUND(S12/10000,0)*10000 * 991111199 = MOD(S13, 100) + ROUND(S13/10000000, 0)*10000000 */ //}; public ULongStorage(MatcherCreateArgs createArgs) : base(createArgs) { }
public EightteenOrLessDigitOrLessMatcher(MatcherCreateArgs createArgs) : base(createArgs) { }
//protected static readonly UInt32[] probableMaskedData = new UInt32[] //{ /* * 999919999 = MOD(MOD(S1, 10000)+(ROUND((S1/100000),0) *100000), 1000000000) * 119999999 = MOD(S2,10000000) * 991199999 = MOD(S3, 100000)+(ROUND((S3/10000000),0) *10000000) * 999991199 = MOD(S4, 100) +(ROUND((S4/10000),0) *10000) * 999999911 = ROUND(S5/100,0)*100 * 991119999 = MOD(S6, 10000)+(ROUND((S6/10000000),0) *10000000) * 999911199 = MOD(S7, 100)+(ROUND((S7/100000),0) *100000) * 111199999 = MOD(S8,100000) * 119991199 = MOD(S9, 100) + ( ROUND((MOD(S9, 10000000))/10000, 0) *10000) * 119999911 = ROUND((MOD(S10, 10000000))/100,0)*100 * 991199911 = (MOD(ROUND(S11/100,0), 1000) *100) +(ROUND((S11/10000000),0) *10000000) * 999991111 = ROUND(S12/10000,0)*10000 * 991111199 = MOD(S13, 100) + ROUND(S13/10000000, 0)*10000000 */ //}; public UIntStorage(MatcherCreateArgs createArgs) : base(createArgs) { }
public NineDigitOrLessMatcher(MatcherCreateArgs createArgs) : base(createArgs) { }
/// <summary> /// abstract method to create the inner IFuzzyMatchStorage /// </summary> /// <param name="dataChars">default type of characters that are in the column data. Will try to convert.</param> /// <param name="lookupTypes">type of operations supported by matcher</param> /// <param name="extendedStorageUsage">what values can be cached in ExtendedStorageRow</param> /// <param name="sourceColumn">DataColumn to use as data source</param> /// <returns></returns> protected abstract IFuzzyMatchStorage CreateStorage(MatcherCreateArgs createArgs);
/// <summary> /// ctor. will create the inner storage object /// </summary> /// <param name="dataChars"></param> /// <param name="lookupTypes"></param> /// <param name="extendedStorageUsage">what values can be cached in ExtendedStorageRow</param> /// <param name="sourceColumn"></param> protected ColumnFuzzyMatcher(MatcherCreateArgs createArgs) { this.storage = this.CreateStorage(createArgs); }
public StringTo10Storage(MatcherCreateArgs createArgs) : base(createArgs) { }
public StringTo10Matcher(MatcherCreateArgs createArgs) : base(createArgs) { }