|
|
| Data Quality | Direct Marketing | Consulting | Downloads | Support | Resources | Lookups | Company |
| Using Address Object |
|
• How To Set Your License String? • Environment Variables • How do I use checksums to validate the integrity of my files? • What is in my DQ Suite DVD? • How do I automate the DQ Suite setup? • What do I need to do when installing the DQ Suite DVD? • How do I generate suggestions? • What affects the speed of Address Object? • What is multi-threaded programming, with respect to MelissaDATA’s data quality tools? • Why does my Canadian address code differently than CanadaPost.com? • How does an obviously bad address get coded as correct? • Why can’t the engine change 1st St to First St or 1 to 1st during verification? • Why is my address coding to a completely different street name. • Why is the city not being corrected? • Why do my addresses come back in different formats sometimes? Q: How To Set Your License String? > A: Set Your Environment Variable For Windows Set Your Environment Variable For Linux Q: Environment Variables > A: MDADDR_SERVERMODE Currently, MDADDR_SERVERMODE only has one value, “sticky”. Sticky is an option that can be set to change the way Address Object behaves when many instances are created and destroyed. This variable, turned off by default, will enable Address Object to retain some of the data files used for initialization in memory after the last instance of Address Object is de-allocated, but before the application ends. This may be useful for applications that use multiple instances (For example: Web services that use individual threads for each client) and have times where the number of instances drop to 0 while the application is still running. Using this variable should increase the speed of initialization for those qualifying applications. To set the sticky variable, follow these steps: i) For Unix (Linux and Solaris), add these lines to .cshrc or .profile of the login account that is running Address Object: csh, tcsh: setenv MDADDR_SERVERMODE sticky bash, sh, ksh: MDADDR_SERVERMODE=sticky export MDADDR_SERVERMODE ii) For Windows, add the following entry to your system environment variables: Variable Name: MDADDR_SERVERMODE Value: sticky Then restart the application using Address Object. Q: How do I use checksums to validate the integrity of my files? > A: Checksums are codes generated from files that can be used to check the integrity of a file. If two files have the same checksum, they can be assumed to be the same file. At Melissa Data, we use a md5 checksum utility (http://www.fourmilab.ch/md5/). If our tech support asks for your checksum, you can download the command line utility at the URL above. Then, after unzipping it, navigate to md5.exe from the command line, and type md5 “filename” for the checksum. We will then compare your checksum to ours to see if any corruption has occurred. Q: What is in my DQ Suite DVD? > A: Here is a general overview of the structure and contents of the DQ Suite DVD: • Root - setup.exe [For Windows install - setup.sh [For Linux/Solaris install] - changes.txt [Text file containing latest changes and updates] - qstart.pdf [PDF file containing descriptions of the Objects, Install guides, Implementation guides, and other important information] Included Data Quality Objects Folders - The Included Data Quality Objects folders are separated into the different Objects included in your DQ Suite DVD: Address Object, Email Object, Name Object and Phone Object. - Each folder contains a PDF manual explaining the Objects’ methods, properties and initialization procedures. Data Files Folder - Each Included Data Quality Objects directory contains a Data Files folder which contains necessary files to run the Object. - For Address Object, the Data Files directory contains necessary data files as well as folders to the different Add-ons (DPV, LACSLink, SuiteLink, AddressPlus, RBDI and mdCanada). Operating System Folders - Each Included Data Quality Tool directory contains folders for different Operating Systems: Windows, Linux, AIX, and Solaris. • Sample Codes, Technologies (For Windows) and Libraries Folders - Located within each Operating System Directory are folders for interfaces, samples, technologies and libraries. - The interfaces and samples folders contain sample codes for different types of languages. Interface samples include wrappers for their respective languages. - Readme files are included for step by step instructions on how to run sample codes. - The Windows directory contains folders for COM and DLL technologies. The COM and DLL files are needed in order for the windows sample codes to run. - All other Operating Systems contain Library folders for specific compilers such as GCC. These libraries are needed in order for the sample codes to run. Extras - This folder contains an Adobe Reader 9 installer for viewing PDF files, barcode fonts used for presorting, and other generic libraries used by Windows. - The extras folder also contains a dashboard that provides you a more detailed overview of the Data quality suite. -New scripts for automating the download and update procedure for Address, Name, Phone, Email, and Geocoder objects are now located in the extras directory. Q: How do I automate the DQ Suite setup? > A: How do I automate the DQ Suite setup? How do I automate the DQ Suite setup? A: *** WINDOWS *** The Windows Setup program for Data Quality Tools accepts optional command line parameters. These can be useful to system administrators and to other programs calling the Setup program wishing to automate the entire process without clicking on the dialogs. Run the Setup on a test machine like so: D:\\setup.exe /SAVEINF="c:\\setup.inf" - This can be any file name you wish. This instructs Setup to save installation settings to the specified file. Now for any number of other machines, setup can run off the created INF file to run an identical setup on each individual machine. D:\\setup /LOADINF="c:\\Scripts\\setup.inf" /SILENT /SUPPRESSMSGBOXES This instructs Setup to load the settings from the specified file after having checked the command line. This file can be prepared using the '/SAVEINF=' command as explained above. Acrobat Reader must already be installed on the client machine for a truly silent install. Note: Please remember to use quotes if the filename contains any spaces. ***UNIX*** The unix installer can take flags to set all the options of a install in one line. To customize an install, run the installer once through interactive mode and customize it the way you like. Then, copy the command line options that the install will provide you to replicate the install on other machines. Q: What do I need to do when installing the DQ Suite DVD? > A: When you install the DQ Suite DVD, please pay attention to changes.txt on the root of the DVD. It will contain any changes that have been made to any of the objects which may require you to rewrite/recompile your application. Also, when using the wrappers in the Interfaces folder, please read the readmes for each wrapper you are using as they may contain changes to the build process you have to make. Q: How do I generate suggestions? > A: Added on April, 2010, this new feature gives you the ability to automatically provide address suggestions without the use of the StreetData Interface. By making use of Find Suggestions, you can easilly generate the possible and sensible alternatives to addresses that did not verify. Using Find Suggestions: In order to correctly use Find Suggestions, you must first proceed with the standard procedure in initializing and verifying an address: // * In order to activate FindSuggestions, you are required to initialize both the US National Data Files and the DPV Data Files. //set path to data filess drobj.PathToUSFiles = “Path to mdaddr Data files” //set path to required add-on addrobj.PathToDPVDataFiles = “Path to DPV Data files” //set license string addrobj.SetLicenseString(“License”) //Initialize Result = addrobj.InitializeDataFiles() //Set your address input addrobj.Address = "Address Here" addrobj.City = "City Here" addrobj.State = "State Here" addrobj.Zip = "Zip Here" //Verify Your Address addrobj.Verify() // * Naturally, you'd want to provide suggestions to customers when there is an error in the address. So you would first want to check for errors in the address. If lets say for example you wanted to provide suggestions for Unknown Streets (AE02) and Component Errors (AE03), this is how you would code it: if(addrobj.Results.Contains("AE02")||addrobj.Results.Contains("AE03")){ // Call the Find Suggestion Method and proceed if it returns 1 if(addrobj.FindSuggestion()) { // Output the current suggestion found Address.Text = addrobj.Address City.Text = addrobj.City State.Text = addrobj.State Zip.Text = addrobj.Zip Suite.Text = addrobj.Suite // Keep calling FindsuggestionNext until it returns 0 while(addrobj.FindSuggestionNext()) { // Output the next suggestions found Address.Text = addrobj.Address City.Text = addrobj.City State.Text = addrobj.State Zip.Text = addrobj.Zip Suite.Text = addrobj.Suite } } } Q: What affects the speed of Address Object? > A: The speed of Address Object can vary widely depending on how it is used. Here are some information that is good to know when looking to affect the speed of Address Object: Factors that affect speed of Address Object: • Development Language: Since address object is written in C++, calling it from a C++ program would be fastest. There is often not a lot of flexibility in the choice of programming language but if there is, this is something to consider. • Which version of Address Object you use: For windows, there are two versions of Address Object available. AddrObj.dll which is a COM Object and mdAddr.dll which is a stardard windows PE dll. The address verification engine is the same but AddrObj.dll has a COM layer to facilitate communication with programming languages that support COM. Using mdAddr.dll without the COM layer can increase the speed slightly. • The quality of the addresses: Bad addresses take longer than good addresses because more searching and computation is involved. • Location of the data files: The Address Object data files should be on a local hard drive. Address checking will still work if you host the data files on a network share but there will be significant speed loss and can become unstable under heavy load. • Hardware: Adding more ram will help increase the speed. At least 2GB is recommended, 4GB preferable. Hard drive improvements like a SCSI or SSD drive will also increase speed. Tips to increase speed: • Sorting your data by zip code will increase speed: The US data files are stored in zip code order and processing data in that order will decrease internal memory swapping, thereby make the process faster. • Only initialize once: Each instance of Address Object only needs to be initialized once. Initialization is the most time intensive process, so the more records you can verify with only one initialize will decrease the time per record. • Do not initialize add-ons you do not need: Certain add-ons for Address Object provide additional data that not everyone will need. The eLot add-on provides Lot order and Lot number, RBDI indicates if an address is a residence or a business. If you do not need this data, you should not unnecessarily initialize these data files. • Using more threads: Multiple instances of Address Object can be instantiated and used at the same time. It is thread neutral so as long as you ensure each instance stays in one thread, using multiple threads can maximize your computing power and increase speed. Do not expect double the speed for double the number of threads though. Q: What is multi-threaded programming, with respect to MelissaDATA’s data quality tools? > A: When working with MelissaDATA API components, you are multi-threading in these situations: • You have several threads, each creating an instance of an object. • You have several threads, all using a single (or a few) instances of an object. Be aware that sometimes you are multi-threading without even realizing it. This is particularly true for web applications. For example, a web service will often handle multiple requests simultaneously. Each request will be handled on a separate thread, though the code you have written to handle a request is oblivious to this. What should be my primary concerns? Primarily, the thread that creates an instance to an object ‘owns’ that instance and any other threads should not use that instance. If you choose to violate this rule and ‘share’ instances across threads, your program must ensure that a thread is completely done using the instance before another thread attempts to use it. Often, this is done through the use of critical sections, mutexes or semaphores. Bear in mind that it is very difficult to debug multi-threaded applications, and the precautions needed to share instances further complicate the issue. The more practical solution is to ensure that each thread owns its own instance. However, when working with large numbers of threads, this can be problematic, as operating system limitations (open threads, file handles, memory, etc) can be a limiting factor. Why is threading an issue? At any given moment, an instance exists at a certain state. Two threads calling the same instance will usually cause the instance to change states in unexpected ways, leading to incorrect results and/or crashes. For example, say thread 1 calls the Address Object (AO) with an address. The AO at this point is in ‘State A’. Then, before thread 1 can obtain the AO’s results, thread 2 calls the AO with a different address, putting it into ‘State B’. When thread 1 retrieves its results, it will retrieve the ‘State B’ results rather than the correct ‘State A’ results. Can MelissaDATA’s API components detect improper thread usage and handle the situation accordingly? No, they cannot. It is not a fault of the programming, but rather is inherent to the way microprocessors and operating systems are designed and used. If I’m using a single-core/single-CPU machine, I don’t have to worry about threading issues, right? Wrong. The synchronization issue discussed in question 2 can happen even if the threading is not exactly simultaneous. Q: Why does my Canadian address code differently than CanadaPost.com? > A: Many of the differences that arise from our Canadian address check engine and CanadaPost.com are due to the very different way in which addresses are entered. On CanadaPost.com, you must have your address already completely parsed out already and you do not enter a postal code. This allows CanadaPost.com to skip many complicated parsing issues with Canadian addresses. Our Canadian address check engine takes an entire address line, city, province, and postal code. There are many rules in CanadaPost’s SERP guideline that we must follow as a certified vendor that their own website does not due to their particular address input format. Please read the additional FAQ entries for some common cases. Q: How does an obviously bad address get coded as correct? > A: Sometimes, an obviously bad address will be coded as correct. It may look like a bug in the address checking engine, but it is often times, it is due to SERP guidelines. If we detect a certain type of postal code, can try to correct it, but if we cannot correct it, we must code the input address as valid. You can tell if an address falls under this situation by looking at the postal code and the addresstype property. If the postal code’s 2nd character is a 0 (zero), then it is a rural postal code and must be coded as valid no-matter the input address. You can also look at the addresstype property. If the addresstype is not a 1, 2, or 3, it is likely it will also fall under this category. Q: Why can’t the engine change 1st St to First St or 1 to 1st during verification? > A: Actually, we can but the Canadian SERP guideline does not want us to, so we had to take out this functionality. Sometimes, you may see a change like this occur, but it is most likely due to another rule instead. See “Why is my address coding to a completely different street name.” Q: Why is my address coding to a completely different street name. > A: According to the SERP guidelines, if all these criteria are met, we must code the address to the street name in the database: 1. We cannot find a matching street in the postal code provided 2. The postal code provided only has one street 3. The input range exist in that postal code So, if the street name is completely changes by the address check engine, it is likely your address matched these 3 criteria. Q: Why is the city not being corrected? > A: A Canadian city may have many different spelling variations. If you put in an alternate spelling, we are often required to keep the spelling as is. Each city has individual flags set by CanadaPost on whether to keep alternate spellings. Q: Why do my addresses come back in different formats sometimes? > A: In the Canadian postal system, both the English version and the French version of an address are acceptable. French style addresses have slightly different suffixes and directionals than English style addresses as well as different placement. For example, the English style address “123 Main Ave W” would be “123 Av Main O” in French style. We will keep the style that we determine the original input to be in. Additionally, some street and province names may have special French characters not present in the English alphabet, called diacritics. We have an option to turn diacritics ON (add diacritics), AUTO (keep existing diacritics), and OFF (strip out all diacritics). |
|
Data Quality Tools Address Verification Phone Verification Email Verification Name Parsing Duplicate Detection NCOALink / Change of Address Presorting Geocoding IP Location Property Data Enrichment Data Fielding and Parsing Telco |
Data Quality Software Contact Zone Enterprise Plugins Pentaho SQL Server Expressor Studio Appliances Contact Verification Server |
Reference Data Canadian Geo*Data Fone*Data ZIP*Data Geo*Data Consulting Batch Processing Downloads Support Resources Lookups Company |
|
Contact Us |
Partners |
Site Map |
Privacy |
USPS Trademarks |
Terms of use
© Copyright 2012 by Melissa DATA Corp. All trademarks are used as property of their owners. |