{"id":1181,"date":"2015-06-19T01:34:21","date_gmt":"2015-06-18T23:34:21","guid":{"rendered":"http:\/\/uranus:81\/de\/unterstuetzung\/hilfe\/fuzzydupes-net\/"},"modified":"2016-12-02T08:33:31","modified_gmt":"2016-12-02T07:33:31","slug":"fuzzydupes-net","status":"publish","type":"page","link":"https:\/\/www.kroll-software.ch\/de\/unterstuetzung\/hilfe\/fuzzydupes-net\/","title":{"rendered":"FuzzyDupes:NET Assembly Documentation"},"content":{"rendered":"\r\n<h3>Fast Duplicate Search in DataTable Data<\/h3>\r\n\r\n<div>\r\n<p>Library:\tKS.FuzzyDupesNet.dll (DotNet 2.0\/4.0 Assembly)<br \/>\r\nVersion:\t6.x\/7.x<\/p>\r\n<\/div>\r\n\r\n<p>Dependencies: System\/none<\/p>\r\n\r\n&nbsp;<br \/>\r\n\r\n<ul>\r\n<li><a href=\"#General\">General Information<\/a><\/li>\r\n<li><a href=\"#Download\">Download<\/a><\/li>\r\n<li><a href=\"#Licence\">License<\/a><\/li>\r\n<li><a href=\"#Installation\">Installation<\/a><\/li>\r\n<\/ul>\r\n\r\n\r\n<h4>Interface<\/h4>\r\n<ul>\r\n<li><a href=\"#Methods\">Methods<\/a><\/li>\r\n<\/ul>\r\n\r\n<hr size=1>\r\n\r\n<a name=\"General\"> <\/a>\r\n<h2>General Information<\/h2>\r\n\r\n<p>The FuzzyDupes:NET Assembly enables you to find similar records in database record data.<\/p>\r\n\r\n<p>The data is processed in memory, the control implements optimized data structures in c# for this purpose.\r\nThe algorithms used are universal for any string data. Adress data can be processed as any other data as well.<\/p>\r\n\r\n<p>There is one main function that receives a System.Data.DataTable and returns another\r\nDataTable with the results. Some parameters can adjust the search.<\/p>\r\n\r\n<hr size=1>\r\n\r\n<a name=\"Download\"> <\/a>\r\n<h2>Download<\/h2>\r\n\r\n<p>You can always find the current version at\r\n<a href=\"\/download\/FuzzyDupesNETSetup.exe\">\/download\/FuzzyDupesNETSetup.exe<\/a><\/p>\r\n\r\n<p>Different versions will have the same download filename.<\/p>\r\n\r\n<hr size=1>\r\n\r\n<a name=\"Licence\"> <\/a>\r\n<h2>License<\/h2>\r\n\r\n<p>Disclaimer: <i>FuzzyDupes:NET Assembly<\/i> is provided &quot;as is&quot; with no warranty of any kind.<\/p>\r\n\r\n<p><i>FuzzyDupes:NET Assembly<\/i> is <b>not<\/b> Freeware. \r\nThe Demo Version shows an about screen prior to every search. With a valid license, the about screen is never shown.<p>\r\nThe Demo Version is <b>for testing purposes only and must not be used in a productive environment.<\/b>.<\/p>\r\n\r\n<p>More information about licensing this library can be found at the \r\n<a href=\"\/de\/products\/fuzzydupes-net\/\">FuzzyDupes:NET product page<\/a>.\r\nOr contact <a href=\"mailto:info@kroll-software.ch\">info@kroll-software.ch<\/a><\/p>\r\n\r\n\r\n<hr size=1>\r\n\r\n<a name=\"Installation\"> <\/a>\r\n<h2>Installation<\/h2>\r\n\r\n<ol>\r\n<li>Copy the file <i>KS.FuzzyDupesNet.dll<\/i> and <i>\\de\\KS.FuzzyDupesNet.resources.dll<\/i> to your harddrive\r\n<li>Add a dependency to this assembly into your DotNet 2.0 project (VB.NET, C#, or whatever..)\r\n<li>Check <i>Local Copy<\/i> and set <i>Specific Version<\/i> to <i>false<\/i>\r\n<\/ol>\r\n\r\n\r\n<hr size=1>\r\n\r\n<a name=\"Methods\"> <\/a>\r\n<h2>Methods<\/h2>\r\n\r\n\r\n<h4>AboutBox()<\/h4>\r\n\r\n<p>Return Value: void<br>\r\nParameters: none or [ParentForm]<br \/>\r\n&nbsp;<br \/>\r\nShows the AboutBox.<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n<h4>Reset()<\/h4>\r\n\r\n<p>Return Value: void<br \/>\r\nParameters: none<br \/>\r\n&nbsp;<br \/>\r\nResets the settings for the next search. Call this function prior to every search.<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<h4>Cancel()<\/h4>\r\n\r\n<p>Return Value: void<br \/>\r\nParameters: none<br \/>\r\n&nbsp;<br \/>\r\nCancels a long running process.\r\nYou can call this in a Progress-Event.<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<h4>SetColumnOption()<\/h4>\r\n\r\n<h5>Set options for each column<\/h5>\r\n\r\n<p>Return Value: void<br \/>\r\nParameters: int ColumnIndex, bool Cluster, bool DupeSearch, double Weight, bool CompareNull, string ColumnName[, int ImportColumnIndex]<br \/>\r\n&nbsp;<br \/>\r\nSet the Options for your Variant-Array.<\/p>\r\n\r\n<ul>\r\n<li>ColumnIndex is zero-based (first column has the index 0)\r\n<li>Cluster: Include this column in the cluster search (default = false)\r\n<li>DupeSearch: Include this column in the duplicate search (default = false)\r\n<li>Weight: Weight for this column relative to other weights. Values 0 - 1 are weighted, Values &gt; 1 require identical value (no fuzziness), Values &lt; 0 require a different value (no fuzziness). (default = 0.5)\r\n<li>CompareNull: NULL values in this column are compared (default = false*)\r\n<li>ColumnName: Name of this column\r\n<li><span class=\"text-danger\">ImportColumnIndex <sup>**<\/sup><\/span>: Mapping to the column index in the second table for <i>FuzzyMatch()<\/i> and <i>FuzzyMerge()<\/i>\r\n<\/ul>\r\n\r\n<p>Call this prior to <i>DupeSearch()<\/i>, <i>FuzzyMatch()<\/i> and <i>FuzzyMerge()<\/i><\/p>\r\n\r\n<p>*) Important note: Set <i>CompareNull<\/i> to 'true' for columns that are filled with data in (nearly) all rows (e.g. Last Name, Street, ZIP, City) \r\nand set <i>CompareNull<\/i> to 'false' for other columns which may contain NULL values in many rows (e.g. First Name, Phone Number, ...)<\/p>\r\n<p><span class=\"text-danger\">**)<\/span> <i>FuzzyMatch()<\/i> and <i>FuzzyMerge()<\/i> require a mapping and so a valid ImportColumnIndex set for each column<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n<h4>DupeSearch()<\/h4>\r\n\r\n<h5>Search for duplicate values in a System.Data.DataTable<\/h5>\r\n\r\n<p>Return Value: System.Data.DataTable or null<br \/>\r\nParameters: System.Data.DataTable T, double Threshold, double ClusterThreshold, DupeReturnResults ReturnResults, bool ShowProgress[, System.Windows.Forms.Form ParentForm]<\/p>\r\n\r\n<ul>\r\n<li>DataTable T: The data table to perform the search in\r\n<li>Threshold: Threshold option for Duplicate Search (default = 90.0)\r\n<li>ClusterThreshold: Adjusts the Cluster-Size (default = 0.666667)\r\n<li>DupeReturnResults: DRR_DUPES|DRR_ALL - Return Dupes only, Return all records (default=DRR_DUPES)\r\n<li>ShowProgress: Show a Progress dialog. If set to false, the control fires progress events so that you can implement your custom dialog.\r\n(default = true)\r\n<\/ul>\r\n\r\n<p>The returned DataTable has an additional column containing GUIDs for each Record.\r\nThese GUIDs are identical for similar records.<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<h4>FuzzyMerge()<\/h4>\r\n\r\n<h5>Merge two DataTables with fuzzyness<\/h5>\r\n\r\n<p>Return Value: System.Data.DataTable or null<br \/>\r\nParameters: System.Data.DataTable T, System.Data.DataTable TMerge, double Threshold, double ClusterThreshold, MergeReturnResults ReturnResults, bool ShowProgress[, System.Windows.Forms.Form ParentForm]<\/p>\r\n\r\n<p>This method requires a ImportColumnIndex set for each column with <i>SetColumnOptions()<\/i><\/p>\r\n\r\n<ul>\r\n<li>DataTable T: first data table\r\n<li>DataTable TMerge: second data table to merge\r\n<li>Threshold: Threshold option for Duplicate Search (default = 90.0)\r\n<li>ClusterThreshold: Adjusts the Cluster-Size (default = 0.666667)\r\n<li>ReturnResults: MRR_IMPORT|MRR_ALL|MRR_DUPES|MRR_CLEANMERGED - return new records only | return all records | return Dupes only | return the merged result without any dupes (default=MRR_IMPORT)\r\n<li>ShowProgress: Show a Progress dialog. If set to false, the control fires progress events so that you can implement your custom dialog.\r\n(default = true)\r\n<\/ul>\r\n\r\n<p>The returned DataTable has up to 2 additional columns (depending on ReturnResults)<\/p>\r\n\r\n<ul>\r\n<li>GUIDs for each Record\r\n<li>Source of record (0=T, 1=TMerge)\r\n<\/ul>\r\n\r\n<p>These GUIDs are identical for similar records.<\/p>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n<h4>FuzzyMatch()<\/h4>\r\n\r\n<h5>Matches two System.Data.DataTable with fuzzyness,<br>\r\npositive\/negative match between two lists<\/h5>\r\n\r\n<p>Return Value: System.Data.DataTable or null<br \/>\r\nParameters: System.Data.DataTable T, System.Data.DataTable TMatch, double Threshold, double ClusterThreshold, MatchReturnResults ReturnResults, bool ShowProgress, System.Windows.Forms.Form ParentForm<\/p>\r\n\r\n<p>This method requires a ImportColumnIndex set for each column with <i>SetColumnOptions()<\/i><\/p>\r\n\r\n<ul>\r\n<li>DataTable T: first data table<br>\r\n<li>DataTable TMatch: second data table to match with<br>\r\n<li>Threshold: Threshold option for Duplicate Search (default = 90.0)<br>\r\n<li>ClusterThreshold: Adjusts the Cluster-Size (default = 0.666667)<br>\r\n<li>ReturnResults: MAR_ALL|MAR_POSITIVE|MAR_NEGATIVE - return all records | return positive matches | return negative matches (default=MAR_ALL)<br>\r\n<li>ShowProgress: Show a Progress dialog. If set to false, the control fires progress events so that you can implement your custom dialog.\r\n(default = true)<br>\r\n<\/ul>\r\n\r\n<p>The returned DataTable has 1 additional column containing 0=No-Match, or Index (1 based) from TMatch where a match was found<\/p>\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n<h4>ExactMatch()<\/h4>\r\n\r\n<h5>Matches two DataTables exact (without fuzzyness) for a given column<\/h5>\r\n\r\n<p>Return Value: System.Data.DataTable or null<br \/>\r\nParameters: System.Data.DataTable T, System.Data.DataTable TMatch, int MatchColumnIndex, ExactMatchReturnResults ReturnResult<\/p>\r\n<ul>\r\n<li>DataTable T: first data table<br>\r\n<li>DataTable TMatch: second data table to match with<br>\r\n<li>MatchColumnIndex: column index where data must match\r\n<li>ReturnResults: MAR_POSITIVE|MAR_NEGATIVE - match positive \/ negative<br>\r\n<\/ul>\r\n\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n<h4>DeleteDupes()<\/h4>\r\n\r\n<h5>Delete duplicate values from a DataTable (result from another method) depending on a FuzzyDupesID (GUID)<\/h5>\r\n\r\n<p>Return Value: System.Data.DataTable or null<br \/>\r\nParameters: System.Data.DataTable T, int FIDColumnIndex, int SortColumnIndex, int MaxColumn, DeleteOrders DeleteOrder, DeleteReturnResults ReturnResults<\/p>\r\n<ul>\r\n<li>DataTable T: the data<br>\r\n<li>FIDColumnIndex: Zero-based ID of the FuzzyDupesID (GUID) Column (default = -1)<br>\r\n<li>SortColumnIndex: index of the column to sort the results<br>\r\n<li>MaxColumn: only return MaxColumnIndex number of columns. Used to cut the FuzzyDupesID (GUID) from the result (default = -1)\r\n<li>DeleteOrder: DO_KEEP_FIRST|DO_KEEP_LAST - remove all dupes except the first \/ last (default=DO_KEEP_FIRST)<br>\r\n<li>ReturnResults: DER_CLEAN|DER_DELETED - cleaned result \/ deleted records<br>\r\n<\/ul>\r\n\r\n<p>Use this function, to get a clean (dupe free) search result:<\/p>\r\n\r\n<ol>\r\n<li>Search for dupes with <i>DupeSearch()<\/i> and <i>ReturnResults=DRR_ALL<\/i>\r\n<li>Call this function to remove the dupes from the result\r\n<\/ol>\r\n<p>&nbsp;<\/p>\r\n\r\n\r\n<h4>Canceled<\/h4>\r\n\r\n<h5>This property returns true, when a long running process was canceled.<\/h5>\r\n\r\n<p>Return Value: boolean<br \/>\r\nParameters: none<\/p>\r\n&nbsp;<br \/>\r\n<p>&nbsp;<\/p>\r\n\r\n<hr \/>\r\n\r\n<h4>Working with Normalization Rules<\/h4>\r\n\r\n<p>The Method <i>SetNormalizeOption()<\/i> sets a normalization rule to a column.<\/p>\r\n\r\n<p><i>AddNormalizeRule()<\/i> adds a search\/replace pair to the current normalize list<\/p>\r\n\r\n<p>You can use the class <i>NormalizeList<\/i> to create new, load and save lists for normalization.<\/p>\r\n\r\n<p>--- End ---<\/p>\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":904,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1181","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/pages\/1181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/comments?post=1181"}],"version-history":[{"count":0,"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/pages\/1181\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/pages\/904"}],"wp:attachment":[{"href":"https:\/\/www.kroll-software.ch\/de\/wp-json\/wp\/v2\/media?parent=1181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}