We have an existing MS SQL database which is populated with products retrieved from various sources (portals).
The various portals usually have slightly different names for the products.
PortalProduct 1: CocaCola
PortalProduct 2: Manchester United
PortalProduct 3: Maplin Electronics
PortalProduct 1: Coca-Cola
PortalProduct 2: Man Utd
PortalProduct 3: Maplin Elec Ltd.
- We need to correlate these PortalProducts to a central list of Products.
- One Product can have 1-to-many PortalProducts
- The database is populated with around 10,000 PortalProducts
- The database is not populated with any Products. Products need to be added for each new PortalProduct that doesn't match an existing Product.
This must be implemented as a C# console application so that a) we can see the results when the correlate is run and b) so that we can ultimately run it on a task-schedule.
The developer must develop a text matching algorithm to correlate PortalProduct names with Product names (and create a product where there is no match). The emphasis is on the accuracy of the text matching algorithm. Speed is less important than [url removed, login to view] developer should have a mathematical mind and preferably has experience in developing mathematical text matching algorithms.
Examples of mathematical text matching algorithms that could be used (and potentially refined and combined) to meet our requirements are:
Approximate matching with addition of regular expressions ability
Regular expressions for non-fuzzy (exact) matching
[url removed, login to view]
Ideally the developer will already understand and have used some of these before and able to pick the best algorithm(s) for this application.
16 freelancers are bidding on average £182 for this job
Will provide documentation and solid, robust, easy-to-understand, fully-commented code. Will provide support and maintenance for three months after approval. Thanks.
I have used Copyleaks and Fuzzystring in a plagiarism checking software for library for a college. Im sure it will be more than enough for this purpose.